为 Jenkinsfile 执行成功发布条件时出错



我正在尝试在success块中添加条件语句,并且我正在使用script块添加if语句,因为不允许在阶段指令之外使用when语句。从本质上讲,如果我正在检查的变量不为真,我希望 Jenkins 管道结束并且不通知任何成功。

post {
success {
script { 
if (/* checking if a variable is true */) { 
exit 0
} 
}
// proceed to notify build was successful
}
failure {
// proceed to notify build failed
}
always {
// delete directories
}
}

但是当我执行 Jenkins 构建时,我收到以下错误消息:

Error when executing success post condition:
hudson.AbortException: script returned exit code 128

那么,在if语句中结束或终止管道的正确方法是什么?我知道错误不在于我通知成功的方式,因为如果我删除整个script块,我不会收到任何错误。

你可以使用 Jenkins 全局变量:"currentBuild">

您在自己的服务器上有一个列表: https://yourJenkins/pipeline-syntax/globals#currentBuild

currentBuild.result == 'SUCCESS'

就个人而言,我通常以以下内容结束我的管道(脚本(:

if (currentBuild.result == "FAILURE" || currentBuild.result == "UNSTABLE")  {
step ([$class: 'Mailer', recipients: 'xxx@xxx.com'])
} else {
cleanWs cleanWhenFailure: false
}

希望对您有所帮助。

最新更新