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

87

Comment puis-je dire à Jenkins de gérer un projet spécifique sur un esclave particulier?

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

Lorin Hochstein
la source

Réponses:

84

Activez la case à cocher "Restreindre où ce travail peut être exécuté" dans la configuration de votre travail et spécifiez le nom de votre esclave.

Si vous ajoutez ultérieurement des esclaves, vous pouvez définir des étiquettes pour chaque esclave et spécifier celles-ci dans vos configurations de travail.

Voir cette documentation de référence:

gareth_bowles
la source
Merci. J'ai utilisé pas mal de temps avant de trouver votre réponse. Il aurait dû ajouter à cette page wiki.jenkins-ci.org/display/JENKINS/Distributed+builds
Surasin Tancharoen le
16

Si vous exécutez un travail Pipeline, vous souhaitez d'abord ajouter une étiquette (par exemple, "esclave") au nœud esclave (ou à l'agent, tel qu'il semble être appelé maintenant).

Ensuite, dans le script de pipeline, vous spécifiez l'étiquette sur laquelle le travail est exécuté:

Pipeline déclaratif:

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

Pipeline scripté:

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

Ce travail s’exécutera désormais sur n’importe quel noeud portant l’étiquette «esclave». Si vous souhaitez que le travail ne soit exécuté que sur cet esclave, ne réutilisez pas le libellé. Et bien sûr, l'étiquette ne doit pas nécessairement être «esclave»; ça peut être ce que tu veux.

Mise à jour:

Dans le pipeline scripté, si votre nœud s'appelle "Mon nœud", vous pouvez également procéder comme suit:

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

Si vous souhaitez que le bloc de code ne s'exécute que sur ce nœud particulier, cela est utile. Toutefois, l'utilisation d'étiquettes est plus flexible et peut faciliter l'ajout de nœuds pour partager la charge de travail.

jpyams
la source
C'était si difficile à trouver, la documentation pour la syntaxe scriptée est en train de mourir en faveur du déclaratif, je ne peux pas encore migrer, alors merci!
Mitchell Currie
7

Si vous souhaitez utiliser Node / Label en tant que paramètre, installez NodeLabel Parameter Plugin

Alex Okrushko
la source
Notez que si vous choisissez le paramètre "Node" pour un travail et que vous souhaitez l’appeler depuis Groovy, vous devez créer un paramètre spécial: params += new org.jvnet.jenkins.plugins.nodelabelparameter.LabelParameterValue('testServer', testServerLabel);(au lieu du paramètre habituel StringParameterValue).
Nux