Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-57826

catchError(buildResult: hudson.model.Result.SUCCESS, stageResult: hudson.model.Result.FAILURE) doesn't set stage to FAILURE


      If I have a stage with a step in it:

                               catchError(buildResult: hudson.model.Result.SUCCESS,
                                         message: 'RPM build failed, but allowing job to continue',
                                         stageResult: hudson.model.Result.FAILURE) {
                                  sh label: env.STAGE_NAME,
                                     script: 'exit 2'

      With a post block for the stage:

                          post {
                              always {
                                  archiveArtifacts artifacts: 'artifacts/**'
                              success {
                                  println "${env.STAGE_NAME}: SUCCESS"
                              unstable {
                                  println "${env.STAGE_NAME}: UNSTABLE"
                              failure {
                                  println "${env.STAGE_NAME}: FAILED"

       I actually get the:

      My Test Stage: SUCCESS

      telling me that the stage was a SUCCESS, not a FAILURE like the:

      catchError(..., stageResult: hudson.model.Result.FAILURE) is supposed to be making it.

      In both the stage view and the Blue Ocean view, it does show as a failed stage. The post processing block just doesn't see it that way.

      As an aside, is there a variable set for the stage that I could use in my println above so that I could just do a single println in the always block rather than having to repeat it through the success, unstable and failure blocks?

            abayer Andrew Bayer
            brianjmurrell Brian J Murrell
            0 Vote for this issue
            5 Start watching this issue