我们的要求如下 - 我们正在使用Git和Jenkins 想从上次成功构建中找出源代码更改 和github上的当前变化。 (分支相同)这个 我们想要通过电子邮件发送的更改列表(不作为附件)
我们尝试过使用jenkins的git diff,email-ext插件。什么可以 是实现这一目标的不同方式。
答案 0 :(得分:0)
我建议结合使用 git hooks 和 Jenkins Remote JSON API 。
您可以使用JSON API获取有关上次成功构建的信息,其中包含以下URL:
http://<hostname>:<port>/job/<test_name>/lastSuccessfulBuild/api/json
JSON 将因 GET '该网址而返回。在 JSON 内部将是一个名为 buildsByBranchName 的哈希。在其中将至少列出一个,可能更多的分支。您可能需要 origin / master ,尽管它取决于您要合并的分支。其中包含一个名为 revision 的属性,其中包含 SHA1 。然后可以在 git diff 中使用它。
使用 git hooks ,我建议使用 post-receive 挂钩。这本质上是一个 bash 脚本,但它可以包装更复杂的脚本,例如 Python 。这里要记住的一件事是,如果当前提交是合并,那么您想要检出的内容实际上可能是当前提交的一个或两个提交。
在任何情况下,假设您在 post-receive 挂钩中包装 Python 脚本。在 Python 脚本中,您可以添加调用上面提到的 JSON URL的代码,以确定上次成功构建的提交哈希。 / p>
然后你可以将它与最新的提交哈希结合使用(可以使用标准的git命令行工具从git钩子中获取,其中有多种方法可以实现这一点),然后执行< em> git diff 使用提交哈希,你得到了最后一次成功的构建和最近的构建,以获得它们之间的变化。
然后,您可以将这些更改通过电子邮件发送到您希望的人员列表中。