这个问题是关于如何向在 jenkins 的下游作业中破坏集成测试的 git 提交者发送电子邮件,并查看下游作业中的更改列表。
我没有尝试过我在这里写的所有东西,所以我可能是错的,这些是我遇到的代码的印象。
显然有很多尝试来回答这个问题,但似乎没有一个令人满意,所以我会详细说明。详情如下:
我们曾经使用 svn。我们的作业层次结构是一项检查和编译的作业,并触发其他作业,这些作业获取编译工件并对其执行杂项集成测试。
电子邮件需要发送给破坏构建的上游 svn 提交者。
我们喜欢通过 email-ext 插件 (https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin) 发送电子邮件,因为它非常可定制,我们大量使用此功能。
email ext 插件使用当前作业的 changelog.xml 来发现谁破坏了构建。由于 changelog.xml 是由 checkout 操作创建的,因此它存在于上游作业中。因此,email-ext 似乎不知道它应该向谁发送电子邮件。
如果您决定包括罪魁祸首,您可以使用 -Dhudson.upstreamCulprits=true 开始您的詹金斯,这会改变电子邮件分机的行为,但如果您不想包括罪魁祸首,那将无济于事。此外,下游作业中似乎没有可用的变更集。
还有一个责备上游提交者插件,但它似乎不能很好地与电子邮件分机配合使用。
upstreamCulprits 和 blame-upstream 似乎都需要指纹识别,我们宁愿不要,因为我们有很多文件和很多工作......这有严重的性能问题。
我们使用 BlameSubversion 插件 (https://wiki.jenkins-ci.org/display/JENKINS/BlameSubversion) 解决了我们的问题。它显然从触发该作业的上游项目中复制了 changelog.xml,因此当该作业失败并在更改日志中查找破坏构建的用户时,它可以找到它们,并且它们也出现在更改日志中。
所以我们很高兴,关于svn。现在,我们迁移到了 git。没有责备 Git 插件。我们不介意写一个。我们只需要了解我们是否应该这样做。人们一起使用 git 和 jenkins 已经有一段时间了。我们不可能是第一个遇到这个困难的人……
谢谢,内森。