-
Bug
-
Resolution: Fixed
-
Critical
-
None
After testing the new nested sequential stages feature in version 1.3 of pipeline-model-definition recently released, I found that the error handling is not working as (I) expected. Given this minimal Jenkinsfile
pipeline { agent none stages { stage('A') { stages { stage('A.1') { steps { error('Error in stage A.1') } } } } stage('B') { steps { echo('Executing stage B') } } } }
I expect that stage B is not executed, but it is, as the console output shows:
Branch indexing > git rev-parse --is-inside-work-tree # timeout=10 Setting origin to git@git:verification > git config remote.origin.url git@git:verification # timeout=10 Fetching origin... Fetching upstream changes from origin > git --version # timeout=10 using GIT_SSH to set credentials > git fetch --tags --progress origin +refs/heads/*:refs/remotes/origin/* Seen branch in repository origin/master Seen branch in repository origin/work/TEST-1234 Seen 2 remote branches Obtained Jenkinsfile from fbd58047af16f0ab665ec6d550d21ceff1e91cfb Running in Durability level: MAX_SURVIVABILITY First time build. Skipping changelog. [Pipeline] stage [Pipeline] { (A) [Pipeline] stage [Pipeline] { (A.1) [Pipeline] error [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (B) [Pipeline] echo Executing stage B [Pipeline] } [Pipeline] // stage [Pipeline] End of Pipeline Finished: FAILURE
Given a pipeline without nested stages the behaviour is as expected; stage B is skipped when stage A fails:
pipeline { agent none stages { stage('A') { steps { error('Error in stage A') } } stage('B') { steps { echo('Executing stage B') } } } }
Console output shows that stage B is skipped:
Branch indexing > git rev-parse --is-inside-work-tree # timeout=10 Setting origin to git@git:verification > git config remote.origin.url git@git:verification # timeout=10 Fetching origin... Fetching upstream changes from origin > git --version # timeout=10 using GIT_SSH to set credentials > git fetch --tags --progress origin +refs/heads/*:refs/remotes/origin/* Seen branch in repository origin/master Seen branch in repository origin/work/TEST-1234 Seen 2 remote branches Obtained Jenkinsfile from 203fe77650dbdd5392790cfe53558d7ef67fe0de Running in Durability level: MAX_SURVIVABILITY First time build. Skipping changelog. [Pipeline] stage [Pipeline] { (A) [Pipeline] error [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (B) Stage "B" skipped due to earlier failure(s) [Pipeline] } [Pipeline] // stage [Pipeline] End of Pipeline ERROR: Error in stage A Finished: FAILURE
- links to