Jenkins 如何配置在 GitHub 合并 PR 后触发构建

通常这个构建的触发可以通过使用插件来完成。

GitHub Pull Request Builder

你可以安装一个称为 GitHub Pull Request Builder 的插件。

首先进入 Jenkins 的插件管理

jenkins-git-pr-01

搜索插件 GitHub Pull Request Builder 然后进行安装。

jenkins-git-pr-02

选择在安装后重启下 Jenkins,如果不重启的话,这个插件没有办法激活。

jenkins-git-pr-03

如果你希望重启也没有什么问题,Jenkins 重启时间也比较快,需要注意的是当前还有没有项目在构建。

对插件进行配置

找到 Jenkins 的系统配置

jenkins-git-pr-04

然后选择配置系统。

jenkins-git-pr-05

然后找到 GitHub Pull Request Builder 的配置。

你不需要修改 API URL。

Credentials 的配置需要使用你的 GitHub 的用户名和 Token,请注意,这里不是密码是 Token。

如果你还没有在 GitHub 中配置 Token 的话,你需要先进行配置。

然后再测试 API,等 API 测试成功后 Jenkins 全局的配置就完成了。

jenkins-git-pr-06

测试 API 的连接。

在这里你需要确定你的 API 能够正常连接没有问题。

jenkins-git-pr-07

上面的图显示了通过 API 的测试连接没有问题。

GitHub 设置 Webhooks

这里有几个地方需要配置,第一个是 Payload URL,你需要在你 Jenkins 构建的 URL 后面添加 ghprbhook

所以 Payload 的地址应该为 yourserver.com 这样的格式。

内容的类型,应该选择是 JSON 的格式,

jenkins-git-pr-08

在下面的事件选择中,应该选择 PR 这个事件。

测试

在完成上面的配置后,就可以对项目中提交 PR ,进行测试了。

你可能会发现提交的 PR 但是构建没有开始。

那么你需要找到你 Jenkins 的构建中,选择配置中的 Build Triggers。

在这里选择 GitHub Pull Request Builder。

需要将 Use github hooks for build triggering 这个选择上。

jenkins-git-pr-10

在高级配置中,有一个 Build every pull request automatically without asking (Dangerous!). 选项。

这个选项对任何创建的 PR 都会进行构建。

jenkins-git-pr-11

通常你可以通过设个设置来判断 PR 能够触发构建。

日志

通常在完成上面的配置后,我们并不知道为什么我们的构建不能够被触发。

这个时候你可以查看 Jenkins 的日志,以确定 GitHub 发送了正确的请求到你的 Jenkins 上面。

jenkins-git-pr-12

通过查看 Jenkins 的系统日志,找到日志的最后面。

你可以看到 PR 数据是否已经发送过来了,以确定 GitHub 和你 Jenkins 直接的通信没有问题。

jenkins-git-pr-13

通常这个是排查问题的第一步,如果你这里都没有数据的话,那么有可能是通信都没有配置好,你需要调整前面的配置。