Jenkins(持续构建)可以查明导致构建失败的提交吗?

时间:2012-09-29 02:46:50

标签: jenkins

Jenkins说构建成功或失败了,但它能识别导致构建失败的确切提交(和作者!)吗?

This issue似乎表明没有。

修改:来自与Pace的交流:

  

我所看到的是“包括匪徒”,这是自上次以来的每个人   建立。我不希望这样。我想要罪魁祸首,詹金斯正在这样做   二分搜索。如果Jenkins做了两次构建10次提交,我不这样做   想要10个可能的罪魁祸首,我希望它找到那个

我还没有听说过如何做到这一点。

2 个答案:

答案 0 :(得分:3)

该页面讨论的是“查找错误”插件,而不是正常的构建周期。根据设置的方式,Jenkins可以识别导致失败的确切提交和作者。如果Jenkins安装了适当的源代码控制插件,并且配置为知道存储库,则构建绑定到每个构建,它将列出自上次构建以来的更改。

此外,Jenkins在其许多报告插件中都有能力归咎于错误的提交者。例如,它可以在失败的构建上向发生错误提交的开发人员发送e-mail notification

然而,许多设置使詹金斯很难知道。例如,如果Jenkins配置为每日构建,则可能有许多提交可能导致该问题。 Jenkins也可能未配置为了解源控件存储库,或者没有源控制存储库。所有这些问题都可能导致Jenkins无法识别构建断路器。

特别是对于发送错误提交者的电子邮件,您可以使用email-ext插件,该插件具有向上次成功构建后提交的所有人发送电子邮件的选项。

有关此主题的幽默观点,请查看this approach

答案 1 :(得分:0)

我认为在某些情况下你所要求的是不可能的。确定谁是罪魁祸首需要深入了解只有人才能决定的冲突解决方案。即使如此,有时候经理也必须参与仲裁。比如说你得到了3个提交(A,B,C),这些提交依赖于预先存在的定义。但是,另一个提交(D)修改了该函数的行为。你回复哪个?也许这是将A,B,C保持原样并将D返回其原始状态的商业计划。相反,修改A,B,C以适应D的变化也是可能的。

在机器可以处理仲裁的情况下,单元测试和静态分析器负责确定罪魁祸首(尽管仍然不完善)。静态分析器有时会内置功能,通过电子邮件向违规者发送电子邮件。可以编写单元测试,通知负责测试失败的团队或团队成员。两者都可以以相同的方式工作,以识别谁是失败的特定线路上的最后一个提交者。但是,如果它是链接问题,那么也许某些成员应该与特定的makefile相关联。