阶段失败但在 Jenkins 中将构建结果保持为成功

Failing a stage but keeping build result as Successful in Jenkins

我有以下代码作为 Jenkins 脚本管道:

node {  
    stage('Stage 1') { 
        echo "1"
    }
    stage('Stage 2') { 
        catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
            sh "exit 1"
        }
    }
          
    stage('Stage 3') { 
        echo "3"
    }
  }
}

这在 Jenkins 中成功生成了我想要的结果,也就是说,我希望构建成功但 stage 2 失败。

我不明白 sh "exit 1" 到底在做什么。如果我在这里做任何其他事情,Stage 2 不会被标记为“失败”。 sh "exit 1" 在这里做什么?

exit 1 是 shell 脚本中的退出代码,这意味着 捕获所有一般错误

此处参考本指南Exit Codes With Special Meanings

因此,在管道阶段,您已将 sh "exit 1" 放入 catchError 块中,这意味着它将以 退出代码 1 退出 shell 脚本(即任何一般错误)和 catchError 块将捕获导致特定阶段失败但构建结果通过的错误。