web-dev-qa-db-fra.com

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

Comment dire à Jenkins d'exécuter 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 scène d'une application. Mais je ne peux pas comprendre comment configurer le projet pour qu'il s'exécute sur le nœud esclave que j'ai créé.

94
Lorin Hochstein

Cochez la case "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 plus d'esclaves plus tard, vous pouvez définir des étiquettes pour chaque esclave et les spécifier dans vos configurations de travail.

Voir cette documentation de référence:

90
gareth_bowles

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

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

Pipeline déclaratif:

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

Pipeline scripté:

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

Ce travail s'exécutera désormais sur n'importe quel nœud portant le label "esclave". Si vous souhaitez que le travail s'exécute uniquement sur cet esclave particulier, ne réutilisez pas l'étiquette. Et bien sûr, le label n'a pas à être "esclave"; ça peut être ce que vous voulez.

Mise à jour:

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

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

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

18
jpyams

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

7
Alex Okrushko