我有一个try..catch
结构的Jenkins工作:
try
{
[do work here]
}
catch(err)
{
}
有没有办法,从catch
块内部,我可以判断构建是否失败或被用户中止?
我已尝试查看err.getMessage()
,err.getCause()
,err.toString()
和currentBuild.result
,但这些都没有一直告诉我它是否失败或被中止。
答案 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.status
或currentBuild.result
,
根据Jenkins官方Jira问题(
https://issues.jenkins-ci.org/browse/JENKINS-43339):
令人遗憾的是,我们在这里做的不多 - 在某些情况下,ABORTED状态在Pipeline完成执行之前不会被设置,因此我们无法从Declarative告诉我们应该处理构建截止。