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?
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'.
il suffit d'utiliser if
et env.BRANCH_NAME
exemple:
if (env.BRANCH_NAME == "deployment") {
... do some build ...
} else {
... do something else ...
}
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' }