使用Jenkins Job DSL插件时如何使种子作业失败

时间:2016-01-19 09:35:24

标签: jenkins-job-dsl

我正在使用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位?显然我可以在这里抛出异常,但它看起来有点难看。什么是首选/最佳实践方式。

3 个答案:

答案 0 :(得分:3)

目前首选方式是抛出异常。如果抛出javaposse.jobdsl.dsl.DslException,则将禁止堆栈跟踪,并且仅显示该消息。

答案 1 :(得分:0)

另一种方法可能是使用非零代码退出,这会将作业结果标记为FAILURE:

if (! envChecksPass) {
  // TODO: SET THE JOB STATUS TO FAILED
  exit 1;
}

答案 2 :(得分:-2)

在Jenkins管道中,最好使用“错误”步骤

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