首先,我不是在寻求产品推荐(好吧,我是在寻求,但这更像是我在寻找问题的解决方案,而不是试图从现有列表中挑选一些东西)
环境:我正在使用 Jenkins 运行一个复杂的多阶段作业。该作业创建并配置服务器,在其上部署操作系统和应用程序堆栈,用演示数据填充堆栈,运行标准测试,然后运行一些额外的负面测试,然后使用更多配置的服务器扩展堆栈并运行更多测试。
问题:在任何一个阶段都可能发生故障,要么只是报告器配置错误,要么是某个步骤完全失败。无论哪种情况,我都可以在 Jenkins 中执行以下两项操作之一 - 退出(1)或继续,将问题转储到控制台。这两种方法都不太好,因为我最终要么得到一个损坏的未完成作业(如果我退出),要么得到一个漂亮的绿色误报,为了确保它确实是绿色的,我必须从控制台读取几兆的日志转储。
我正在寻找:一种让 Jenkins 或其他系统能够分别监视和报告作业中每个步骤的成功/失败的方法,保持作业的一致性(例如,我无法为每个步骤启动新作业),这样我就可以看到,例如,配置和操作系统部署已成功,堆栈部署有错误但已完成,负面测试失败,而不是每次运行都显示当前的绿色/红色状态,除非我进入并阅读日志,否则没有任何详细信息
欢迎提出任何建议,无论是针对我不知道的 Jenkins 插件,还是针对其他系统,或者其他什么。
答案1
您是否将管道用作 Jenkins 作业的代码,还是将传统的自由式作业链接在一起?如果是后者,那么虽然我知道您可以将作业设置为继续进行,但我确信您可以将其设置为在发生故障时向您发送电子邮件,对吗?
如果您决定使用前者,则可以使用 try 和 catch 块来实现这一点。我有一些步骤可能会失败也可能不会失败,但它们并不是一个大问题。因此,我将步骤放在 try 块中,并在 catch 中强制将构建设置为成功并发送电子邮件。它如下所示:
try {
sh 'exit 1' //the step that might trigger a complete failure
}
catch(err) {
currentBuild.result = 'SUCCESS' //force set the job to a success. i.e continue
emailext .... // email that the step failed
}