使用 Jenkins Job DSL 插件时如何使种子作业失败
How to fail the seed job when using the Jenkins Job DSL plug-in
我正在使用 Jenkins Job DSL 插件并配置了一个参数化构建的种子作业。如果有人忘记填写所需参数之一,我希望构建失败。我的 DSL 脚本顶部有以下内容:
def expectedParams = [
'BRANCH_NAME',
'FALLBACK_BRANCH',
'FOLDER_NAME',
'FOLDER_DISPLAYNAME',
'MAIL_TO'
];
boolean envChecksPass = true;
expectedParams.each {
if (! binding.variables.get(it)?.trim()) {
println "This script expects the $it environment variable to be set."
envChecksPass = false;
}
}
if (! envChecksPass) {
// TODO: SET THE JOB STATUS TO FAILED
return false;
}
如何完成 TODO 位?显然我可以在这里抛出一个Exception,但是看起来有点难看。 preferred/best修行方法是什么
抛出异常是目前首选的方式。如果你抛出一个 javaposse.jobdsl.dsl.DslException
堆栈跟踪将被抑制并且只显示消息。
另一种方法是使用非零代码退出,这会将作业结果标记为失败:
if (! envChecksPass) {
// TODO: SET THE JOB STATUS TO FAILED
exit 1;
}
在 Jenkins 管道中,最好使用 'error' 步骤
if (! binding.variables.get(it)?.trim()) {
error "This script expects the $it environment variable to be set."
}
您将在日志中看到以下输出(没有堆栈状态)
ERROR: This script expects the USER environment variable to be set.
Finished: FAILURE
我正在使用 Jenkins Job DSL 插件并配置了一个参数化构建的种子作业。如果有人忘记填写所需参数之一,我希望构建失败。我的 DSL 脚本顶部有以下内容:
def expectedParams = [
'BRANCH_NAME',
'FALLBACK_BRANCH',
'FOLDER_NAME',
'FOLDER_DISPLAYNAME',
'MAIL_TO'
];
boolean envChecksPass = true;
expectedParams.each {
if (! binding.variables.get(it)?.trim()) {
println "This script expects the $it environment variable to be set."
envChecksPass = false;
}
}
if (! envChecksPass) {
// TODO: SET THE JOB STATUS TO FAILED
return false;
}
如何完成 TODO 位?显然我可以在这里抛出一个Exception,但是看起来有点难看。 preferred/best修行方法是什么
抛出异常是目前首选的方式。如果你抛出一个 javaposse.jobdsl.dsl.DslException
堆栈跟踪将被抑制并且只显示消息。
另一种方法是使用非零代码退出,这会将作业结果标记为失败:
if (! envChecksPass) {
// TODO: SET THE JOB STATUS TO FAILED
exit 1;
}
在 Jenkins 管道中,最好使用 'error' 步骤
if (! binding.variables.get(it)?.trim()) {
error "This script expects the $it environment variable to be set."
}
您将在日志中看到以下输出(没有堆栈状态)
ERROR: This script expects the USER environment variable to be set.
Finished: FAILURE