2017-04-13 57 views
4

我有一个groovy脚本来执行代码。长话短说,我知道在该剧本的某个时间点,如果它成功与否。如果不成功,我想失败。 Groovy有没有办法使构建失败?从常规脚本中失败的Jenkins构建

示例:

“执行Groovy脚本”插件。你可以编写代码。

(insert API call to promote code) if(checkPromote()){ //fail build here }

其中 'checkPromote' 返回根据的促进状态的true或false值。

+0

返回脚本中的非零退出码。应该失败你的构建 – Rik

+0

这是我第一次尝试。 '返回-1',这是行不通的。 – Eddie

+0

我也尝试'返回false'。 – Eddie

回答

7

在我看来,最优雅的放弃程序的方式就是断言。

assert condition : "Build fails because..."

1

的声明管道DSL有一个错误的步骤:

error('Failing build because...') 

https://jenkins.io/doc/pipeline/steps/workflow-basic-steps和搜索页面“错误的信号”。

这也将做到这一点:

sh "exit 1" 
+0

这不是一项管道工作。这是一个自由式项目 – Eddie

+0

@Eddie你确定吗?我不认为自由式项目有时髦脚本。 – SINGULARITY

+0

@SINGULARITY他们做的,是的 –

0

我通常使用的throw new Exception("Error Message")简单的东西,所以也许你可以用已经尝试:

if(checkPromote()){ 
     throw new Exception("Error Message") 
    } 

希望这也适用于您

0

从此页,https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin

import hudson.AbortException 
//other code 
throw new AbortException("Error message .") 
+0

你试过这个吗?您看到以下错误:org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:脚本不允许使用新的hudson.AbortException。 – acm

+0

@acm是的,虽然您必须首先批准AbortException的构造函数,但请参阅https://stackoverflow.com/a/39412951/7509826 –