我写了下面的代码,想给用户发送电子邮件通知。但是我注意到有时会有“误报”报告。我只是想知道是否有一种方法Jenkins声明性管道允许我使用真实的的执行状态来设置currentBuild.result.(我想我应该使用currentBuild.result = 'SUCCESS'
或'FAILURE'
)。例如,start_up.sh /mydata/test.json
可以将“SUCCESSFUL”或“ERROR”写入文件。如何将currentBuild.result分别设置为“SUCCESS”或“FAILURE”?根据文件的内容,非常感谢
pipeline {
agent {
docker {
image ...
args ...
}
}
parameters {
string(name: 'E_USERNANE', defaultValue: 'githubuser', description: 'Please input the username')
string(name: 'E_BRANCH', defaultValue: 'dev', description: 'Please input the git branch you want to test')
}
stages {
stage('build') {
steps {
echo "username: ${params.E_USERNANE}"
echo "branch: ${params.E_BRANCH}"
sh """
...
start_up.sh /mydata/test.json
...
"""
}
}
}
post {
failure {
// notify users when the Pipeline fails
mail to: 'xxxi@gmail.com',
subject: "Failed Pipeline * ${currentBuild.fullDisplayName}",
body: "Something is wrong with ${env.BUILD_URL}."
}
success {
// notify users when the Pipeline succeeds
mail to: 'xxx@gmail.com',
subject: "Success Pipeline * ${currentBuild.fullDisplayName}",
body: "The build ${env.BUILD_URL} is passed!"
}
}
}
2条答案
按热度按时间7rtdyuoh1#
看起来标题(* 如何根据执行结果在Jenkins Pipeline中设置当前构建结果?)与代码示例( 如何根据该文件的内容分别将currentBuild.result设置为“SUCCESS”或“FAILURE”?*)有点不同
在像您这样的声明性管道中,可以使用
catchError
块根据命令执行结果轻松设置当前构建(和阶段)结果。例如,将阶段设置为FAILURE
,将整个作业设置为UNSTABLE
:我不知道有什么简洁的一行程序可以直接从文件内容设置构建/阶段结果(身体的问题)。但我想你可以在将状态消息写入文件时,应该设置
start_up.sh
脚本的正确退出代码,因此在将"SUCCESSFUL"
写入文件时,可以使用零代码退出脚本,但是当写"ERROR"
时,你可以用非零代码退出,这就足够让流水线处理catchError
块了。a11xaf1n2#
这是我在一些gitlab集成项目中使用的一个例子...但是使用的是脚本化的管道。当构建失败时会有电子邮件通知,当它恢复稳定时也会有电子邮件通知。