web-dev-qa-db-fra.com

Limiter le pipeline Jenkins à une exécution uniquement sur des nœuds spécifiques

Je crée des emplois qui utiliseront énormément les canalisations Jenkins. Nos nœuds sont désignés par projet par leurs balises, mais contrairement aux travaux normaux, la construction du pipeline ne semble pas avoir la case "Restreindre où ce projet peut être exécuté". Comment puis-je spécifier sur quel nœud le pipeline fonctionnera comme je le fais pour les travaux normaux?

34
Opher Lubzens

Vous spécifiez le noeud ou la balise souhaité lorsque vous effectuez l'étape node:

node('specialSlave') {
   // Will run on the slave with name or tag specialSlave
}

Voir https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-node-code-allocate-node pour une explication détaillée des arguments de node.

40
Jon S

Pour mémoire, prenons l'exemple pipeline déclaratif (en choisissant un noeud portant l'étiquette 'X'):

pipeline {
    agent { label 'X' }
...
...
}
29
redseven

Pour être clair, étant donné que Pipeline a deux syntaxes, il y a deux façons d'y parvenir.

Déclaratif

pipeline {
    agent none

    stages {
        stage('Build') {
            agent { label 'slave-node​' }
            steps {
                echo 'Building..'
                sh '''
                '''
            }
        }
    }

    post {
        success {
            echo 'This will run only if successful'
        }
    }
}

Scripté

node('your-node') {
  try {

    stage 'Build'
    node('build-run-on-this-node') {
        sh ""
    }
  } catch(Exception e) {
    throw e
  }
}
7
einverne