gpt4 book ai didi

jenkins - 捕获 Jenkins 工作流程中的多个错误

转载 作者:行者123 更新时间:2023-12-02 13:17:51 28 4
gpt4 key购买 nike

我的工作流程在使用 try-catch 失败时发送邮件。我还启用了并发性,这样,当同一工作流程的多个作业进入限制阶段时,新作业会取消旧作业。这会抛出“org.jenkinsci.plugins.workflow.steps.FlowInterruptedException”异常并且取消的作业也会触发邮件通知。

现在我已经修改了我的工作流程以捕获特定的 FlowInterruptedException 异常并抑制邮件通知并让其他任何事情触发邮件,就像这样。

node {
try {
// some stages for the workflow
}

catch (org.jenkinsci.plugins.workflow.steps.FlowInterruptedException e){

echo "the job was cancelled or aborted"
}

catch (err){
stage 'Send Notification'
mail (to: 'adminj...@somename.com',
subject: "Job '${env.JOB_NAME}' (${env.BUILD_NUMBER}) has had an error.",
body: "Some text",
mimeType:'text/html');
currentBuild.result = 'FAILURE'
}

}

这仅捕获FlowInterruptedException,当作业由于任何其他原因(命令拼写错误等)而真正失败时,我预计它将被其他捕获捕获并触发代码在里面发送邮件。但事实并非如此。

我认为我的代码在 try catch 中存在一些缺陷。有什么想法吗?

更新:

以防万一,如果我使用下面的代码,它只会发送邮件以解决任何失败

node {
try {
// some stages for the workflow
}

catch (err){
stage 'Send Notification'
mail (to: 'adminj...@somename.com',
subject: "Job '${env.JOB_NAME}' (${env.BUILD_NUMBER}) has had an error.",
body: "Some text",
mimeType:'text/html');
currentBuild.result = 'FAILURE'
}

}

最佳答案

您可以捕获 FlowInterruptedException - 就像您现在所做的那样 - 然后检查其原因之一 (FlowInterruptedException#getCauses()) 是 org.jenkinsci。 plugins.workflow.support.steps.StageStepExecution.CanceledCause,这意味着流程在等待进入 stage 步骤时被中断。

任何其他组合都是符合发送通知电子邮件资格的合法错误。

关于jenkins - 捕获 Jenkins 工作流程中的多个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35188997/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com