如何判断工作是否失败或中止

时间:2018-04-17 21:31:00

标签: jenkins-pipeline

我有一个try..catch结构的Jenkins工作:

try
{
  [do work here]
}
catch(err)
{
}

有没有办法,从catch块内部,我可以判断构建是否失败或被用户中止?

我已尝试查看err.getMessage()err.getCause()err.toString()currentBuild.result,但这些都没有一直告诉我它是否失败或被中止。

2 个答案:

答案 0 :(得分:2)

AFAIK没有一致的方法来判断构建是否失败或中止。当用户中断构建时,抛出了java.lang.InterruptedException,因此您可以从中开始。小心其他可能抛出InterruptedException的代码,比如中止时的input()步骤。

所以你可以这样做:

try
{
    [do work here]
}
catch(err)
{
    if (err instanceof InterruptedException) {
        [handle error]
    } else {
        [handle error]
    }
}

答案 1 :(得分:0)

中止状态将设置为build.statuscurrentBuild.result, 根据Jenkins官方Jira问题( https://issues.jenkins-ci.org/browse/JENKINS-43339):

  

令人遗憾的是,我们在这里做的不多 - 在某些情况下,ABORTED状态在Pipeline完成执行之前不会被设置,因此我们无法从Declarative告诉我们应该处理构建截止。