115 votes

Demander à Jenkins d'exécuter un projet spécifique sur un nœud esclave particulier

Comment puis-je dire à Jenkins d'exécuter un projet spécifique sur un esclave particulier ?

J'ai mis en place un nœud maître Jenkins, et un nœud esclave que je veux utiliser pour la mise en place d'une application. Mais je n'arrive pas à trouver comment configurer le projet pour qu'il s'exécute sur le nœud esclave que j'ai créé.

107voto

gareth_bowles Points 8717

Cochez la case "Restreindre l'endroit où ce travail peut être exécuté" dans la configuration de votre travail et spécifiez le nom de votre esclave.

Si vous ajoutez d'autres esclaves par la suite, vous pouvez définir des étiquettes pour chaque esclave et les spécifier dans la configuration de votre travail.

Voir cette documentation de référence :

36voto

jpyams Points 425

Si vous exécutez une tâche Pipeline, vous devez d'abord ajouter une étiquette (par exemple "esclave") au nœud esclave (ou agent, comme on semble l'appeler maintenant).

Ensuite, dans le pipeline script, vous spécifiez l'étiquette sur laquelle le travail s'exécute :

Pipeline déclaratif :

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

Pipeline scénarisé :

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

Ce travail sera maintenant exécuté sur n'importe quel nœud avec le label 'slave'. Si vous voulez que le travail s'exécute uniquement sur cet esclave particulier, ne réutilisez pas l'étiquette. Et bien sûr, l'étiquette ne doit pas nécessairement être 'slave' ; elle peut être ce que vous voulez.

Mise à jour :

Dans le pipeline scripté, si votre nœud est nommé "Mon nœud", vous pouvez également le faire :

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

C'est utile si vous voulez que le bloc de code s'exécute uniquement sur ce nœud particulier. Cependant, l'utilisation d'étiquettes est plus flexible et permet d'ajouter plus facilement des nœuds pour partager la charge de travail.

9voto

Richard Coleman Points 11

Si vous voulez utiliser Node/Label comme paramètre, installez alors Plugin de paramètre NodeLabel

1voto

Willie Cheng Points 111

Un moyen simple de résoudre ce problème.

pipeline {
agent {label 'node1'}

stages {
    stage('Hello') {
        steps {
            echo 'Hello World'
        }
    }
}

}

enter image description here

enter image description here

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X