Jenkins脚本化管道-sh返回非零退出代码,但阶段为SUCCEEDS

时间:2020-01-24 06:45:58

标签: jenkins jenkins-pipeline sh jenkins-groovy

在我的Jenkins脚本化管道中,我有一个构建阶段,该阶段具有以下sh命令:

def buildcmd = "./scriptname.sh"+ <paramters>
def status = sh returnStatus: true, script:"""cd /to/some/dir
eval ${buildcmd}
"""
if(status != 0)
{
   error("Failure")
}

执行后,scriptname以状态2退出,status变量也包含2,作业失败。但是阶段结果显示为SUCCESS。我希望阶段结果和构建结果均为FAILURE

任何人都可以澄清一下。

1 个答案:

答案 0 :(得分:0)

returnStatus(可选)

通常,以非零退出的脚本 状态代码将导致该步骤失败并发生异常。如果这 选项被选中,该步骤的返回值将改为 状态码。例如,您可以将其与零进行比较。

Source

如果您的目标是简单地使阶段失败,请使用returnStatus: false。不幸的是,我无法告诉您status codeexit code之间的区别(如上所述)。该文档仅告诉您,如果设置returnStatus: true,则流水线不会在退出代码不等于0时失败。

您可以自己设置流水线的结果(Source):

if(status != 0)
{
   currentBuild.result = 'FAILURE'
}