Weisen Sie Jenkins an, ein bestimmtes Projekt auf einem bestimmten Slave-Knoten auszuführen


87

Wie kann ich Jenkins anweisen, ein bestimmtes Projekt auf einem bestimmten Slave auszuführen?

Ich habe einen Jenkins-Masterknoten und einen Slave-Knoten eingerichtet, die ich zum Staging einer Anwendung verwenden möchte. Ich kann jedoch nicht herausfinden, wie das Projekt so konfiguriert wird, dass es auf dem von mir erstellten Slave-Knoten ausgeführt wird.


Antworten:


84

Aktivieren Sie in Ihrer Jobkonfiguration das Kontrollkästchen "Einschränken, wo dieser Job ausgeführt werden kann" und geben Sie den Namen Ihres Slaves an.

Wenn Sie später weitere Slaves hinzufügen, können Sie für jeden Slave Beschriftungen festlegen und diese in Ihren Auftragskonfigurationen angeben.

Siehe diese Referenzdokumentation:


Vielen Dank. Ich habe eine ganze Weile gebraucht, bevor ich deine Antwort gefunden habe. Es hätte dieser Seite hinzugefügt werden sollen wiki.jenkins-ci.org/display/JENKINS/Distributed+builds
Surasin Tancharoen

16

Wenn Sie einen Pipeline-Job ausführen, möchten Sie dem Slave-Knoten (oder dem Agenten, wie er jetzt zu heißen scheint) zunächst eine Bezeichnung (z. B. "Slave") hinzufügen.

Anschließend geben Sie im Pipelineskript die Bezeichnung an, unter der der Job ausgeführt wird:

Deklarative Pipeline:

pipeline {
    agent {label 'slave'}
    stages {
        ...
    }
}

Skriptbasierte Pipeline:

node (label: 'slave') {
    ...
}

Dieser Job wird nun auf jedem Knoten mit der Bezeichnung "Slave" ausgeführt. Wenn der Job nur auf diesem bestimmten Slave ausgeführt werden soll, verwenden Sie das Etikett nicht erneut. Und natürlich muss das Label nicht "Sklave" sein; es kann sein was immer du willst.

Aktualisieren:

Wenn Ihr Knoten in der Skript-Pipeline "Mein Knoten" heißt, können Sie dies auch tun:

node ('My Node') {
    ...
}

Wenn der Codeblock nur auf diesem bestimmten Knoten ausgeführt werden soll, ist dies hilfreich. Die Verwendung von Beschriftungen ist jedoch flexibler und erleichtert das Hinzufügen von Knoten, um die Arbeitslast zu teilen.


Dies war so schwer zu finden, dass die Dokumentation für die Skriptsyntax eher deklarativ ist. Ich kann noch nicht migrieren. Vielen Dank!
Mitchell Currie

7

Wenn Sie Node / Label als Parameter verwenden möchten, installieren Sie das NodeLabel-Parameter-Plugin


Beachten Sie, dass Sie einen speziellen Parameter erstellen müssen, wenn Sie für einen Job den Parameter "Node" auswählen und ihn von Groovy aus aufrufen möchten: params += new org.jvnet.jenkins.plugins.nodelabelparameter.LabelParameterValue('testServer', testServerLabel);(anstelle des üblichen StringParameterValue).
Nux
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.