首页 > 解决方案 > 在 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"

标签: jenkinsjenkins-pipeline

解决方案


exit 1是 shell 脚本中的退出代码,表示捕获所有一般错误

此处参考本指南具有特殊含义的退出代码

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


推荐阅读