【问题标题】:Jenkins scripted pipeline - sh return nonzero exit code but stage SUCCEEDSJenkins 脚本化管道 - sh 返回非零退出代码但阶段成功
【发布时间】:2020-05-10 11:51:26
【问题描述】:

在我的 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

任何人都可以澄清这一点。

【问题讨论】:

    标签: jenkins jenkins-pipeline sh jenkins-groovy


    【解决方案1】:

    returnStatus(可选)

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

    Source

    如果您的目标只是让舞台失败,请使用returnStatus: false。不幸的是,我无法告诉您status codeexit code 之间的区别(如上所述)。该文档仅告诉您,如果您设置returnStatus: true,则管道不会因退出代码不等于0而失败。

    你可以自己设置管道的结果(Source):

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

    【讨论】:

    • 我也尝试设置 currentBuild.result。它将整个作业的结果设置为失败,但阶段仍然成功。
    • 如果你真的想在这个阶段失败,只需执行:sh "exit 1"
    猜你喜欢
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 2023-02-20
    • 2020-02-19
    • 1970-01-01
    相关资源
    最近更新 更多