-
Bug
-
Resolution: Fixed
-
Minor
-
None
-
Jenkins: 2.40 (docker)
Pipeline: Model Definition: 0.8.1
SCM API Plugin: 2.0.1-beta-2
pipeline: Multibranch: 2.10-beta-1
Just installed latest pipeline-model-definition plugin (0.8.1) and was trying to set up a when branch stage condition.
In short, only way to make branch matching work is via expression, evaluating env.BRANCH_NAME directly:
when { expression { return env.BRANCH_NAME == "feature/docker" } }
This is in a branch feature/docker job of a multi-branch pipeline
I tried other permutation of the conditional, and it did not work, the stage would get skipped (steps were not executed):
when {
branch "feature/docker"
}
when { environment name: "BRANCH_NAME", value: "feature/docker" }
My test pipeline is basically:
pipeline { agent { label 'docker' } stages { stage('test condition: expression') { when { expression { return env.BRANCH_NAME == "feature/docker" } } steps { sh 'echo "expression"' } } stage('test when: env') { when { environment name: "BRANCH_NAME", value: "feature/docker" } steps { sh 'echo "env"' } } stage('test when: branch') { when { branch "feature/docker" } steps { sh 'echo "branch"' } } } }
Console output:
[Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (test condition: expression) [Pipeline] sh [myproject_feature_docker-4Z7CPEYEM3PKEYK35E3XFJRVUNLHOV4KEKFEQICOUFRC35RQM2OA] Running shell script + echo expression expression [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (test when: env) [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (test when: branch) [Pipeline] } [Pipeline] // stage
- links to