Jenkins 控制台输出中显示的错误退出代码 1 代码(我不想看到它)

Error exit code 1 code showing in Jenkins Consiole output ( I do not want to see it )

我在 Jenkins 管道中有一份工作 运行,输出显示错误退出代码 1,因为我正在使用 if 语句在该阶段创建 NOT_BUILT。有没有其他方法看不到工作错误退出代码 1。我不想使用 When 语句,但如果可能仍然使用 IF 语句并有一个空白阶段,但在控制台输出中没有此消息错误退出代码 1。
下面是我的脚本:

if(route53 == 'false' ) { 
    catchError(buildResult: 'SUCCESS', stageResult: 'NOT_BUILT') {   
       sh "exit 1"
    }
}
else if(route53 == 'true' && all == "Yes" ) {            
    catchError(buildResult: 'SUCCESS', stageResult: 'NOT_BUILT') {
        sh "exit 1"
    }
}

管道控制台输出中的结果显示了这一点,舞台图形很好,因为它显示了一个空白舞台,但控制台输出错误代码是我真正想要操作的。

output result
    + exit 1
    [Pipeline] }
    [Pipeline] }
    ERROR: script returned exit code 1
    [Pipeline] }
    ERROR: script returned exit code 1
    [Pipeline] }
    ERROR: script returned exit code 1
    [Pipeline] }

使用声明性管道时,NOT_BUILT 状态会保留到未执行的阶段,因为其 when 指令被评估为 false,除了 catchError 解决方法外,没有直接的方法来设置它。 (顺便说一句,您可以使用 error('Your Message') 而不是 exit 1 来控制错误消息)

因此,使用 when 指令是最容易实现的,并且还可以使您的管道更具可读性。如果您坚持使用 if 语句,您仍然可以在带有通用 expression 选项的 when 指令中使用它们,它允许您 运行任意groovy代码,根据需要计算出相关的布尔值。
所以您仍然可以使用您的原始代码并将其更新为 return a Boolean:

stage('Conditional stage') {
    when {
        expression {
            if(route53 == 'false' ) {
                return false
            }
            else if(route53 == 'true' && all == "Yes" ) {
                return false
            }
            return true
        }
    }
    steps {
        ...
    }
}