Jenkins Pipeline Étape/Étape Conditionnelle

comment exécuter une étape / étape de construction seulement si une branche spécifique.

c.-à-d. exécuter tout pour chaque demande / branche de traction, mais si la branche en construction est appelée déploiement, alors exécuter également l'étape de déploiement?

31
demandé sur Krzysztof Krasoń 2016-06-08 02:13:52

3 réponses

Faire de même dans déclarative pipeline de la syntaxe, voici quelques exemples:

stage('master-branch-stuff'){
  agent any
  when{
    branch 'master'
  }
  steps {
    echo 'run this stage - ony if the branch = master branch'
  }
}

stage('feature-branch-stuff') {
    agent label:'test-node'
    when { branch "feature/*" }
    steps {
        echo 'run this stage - only if the branch name started with feature/'
    }
}

stage('expression-branch') {
    agent label:'some-node'
    when {
    expression {
        return env.BRANCH_NAME != 'master';
        }
    }
    steps {
        echo 'run this stage - when branch is not equal to master'
    }
}

stage('env-specific-stuff') {
    agent label:'test-node'
    when { 
      environment name: 'NAME', value: 'this' 
    }
    steps {
        echo 'run this stage - only if the env name and value matches'
    }
}

les moyens les Plus efficaces à venir - https://issues.jenkins-ci.org/browse/JENKINS-41187

regardez aussi - https://jenkins.io/doc/book/pipeline/syntax/#when


UPDATE

De nouvelles QUAND La Clause

REF:https://jenkins.io/blog/2018/04/09/whats-in-declarative

égale - compare deux valeurs-chaînes, variables, nombres, booléens - et renvoie true si ils sont égaux. Je suis honnêtement pas sûr de savoir comment nous manquer l'ajout de cette plus tôt!!! Vous pouvez faire des comparaisons "pas égal" en utilisant le non { égal. .. } combinaison trop.

changeRequest - dans sa forme la plus simple, ceci retournera vrai si ceci Pipeline est la construction d'une demande de modification, telle qu'une demande GitHub pull. Vous pouvez également effectuer des vérifications plus détaillées par rapport à la demande de modification, vous permettant de demander "est-ce une demande de changement contre le maître branche?"et beaucoup plus.

buildingTag-une condition simple qui vérifie simplement si le Pipeline est en cours d'exécution contre une étiquette dans SCM, plutôt qu'une branche ou une commettre de référence.

tag-un équivalent plus détaillé de buildingTag, vous permettant de vérifier contre le nom de la balise m'.

64
répondu Chandan Nayak 2018-04-11 02:03:26

il suffit d'utiliser if et env.BRANCH_NAME exemple:

    if (env.BRANCH_NAME == "deployment") {                                          
        ... do some build ...
    } else {                                   
        ... do something else ...
    }                                                                       
29
répondu Krzysztof Krasoń 2016-06-08 07:25:41

si vous exécutez contre une requête Pull en utilisant le plugin ghprb [GitHub pull request builder], le nom de la branche apparaîtra quelque chose comme origin/pr/<<#PRNumber>>/merge.

dans ce cas, les noms des branches peuvent être saisis en utilisant la variable d'environnement ci-dessous.

when { environment name: 'ghprbSourceBranch', value: 'engine_staging' }
0
répondu Eric Blair 2018-06-11 19:29:35