通常这个构建的触发可以通过使用插件来完成。
GitHub Pull Request Builder
你可以安装一个称为 GitHub Pull Request Builder 的插件。
首先进入 Jenkins 的插件管理
搜索插件 GitHub Pull Request Builder 然后进行安装。
选择在安装后重启下 Jenkins,如果不重启的话,这个插件没有办法激活。
如果你希望重启也没有什么问题,Jenkins 重启时间也比较快,需要注意的是当前还有没有项目在构建。
对插件进行配置
找到 Jenkins 的系统配置
然后选择配置系统。
然后找到 GitHub Pull Request Builder 的配置。
你不需要修改 API URL。
Credentials 的配置需要使用你的 GitHub 的用户名和 Token,请注意,这里不是密码是 Token。
如果你还没有在 GitHub 中配置 Token 的话,你需要先进行配置。
然后再测试 API,等 API 测试成功后 Jenkins 全局的配置就完成了。
测试 API 的连接。
在这里你需要确定你的 API 能够正常连接没有问题。
上面的图显示了通过 API 的测试连接没有问题。
GitHub 设置 Webhooks
这里有几个地方需要配置,第一个是 Payload URL,你需要在你 Jenkins 构建的 URL 后面添加 ghprbhook
所以 Payload 的地址应该为 yourserver.com 这样的格式。
内容的类型,应该选择是 JSON 的格式,
在下面的事件选择中,应该选择 PR 这个事件。
测试
在完成上面的配置后,就可以对项目中提交 PR ,进行测试了。
你可能会发现提交的 PR 但是构建没有开始。
那么你需要找到你 Jenkins 的构建中,选择配置中的 Build Triggers。
在这里选择 GitHub Pull Request Builder。
需要将 Use github hooks for build triggering 这个选择上。
在高级配置中,有一个 Build every pull request automatically without asking (Dangerous!). 选项。
这个选项对任何创建的 PR 都会进行构建。
通常你可以通过设个设置来判断 PR 能够触发构建。
日志
通常在完成上面的配置后,我们并不知道为什么我们的构建不能够被触发。
这个时候你可以查看 Jenkins 的日志,以确定 GitHub 发送了正确的请求到你的 Jenkins 上面。
通过查看 Jenkins 的系统日志,找到日志的最后面。
你可以看到 PR 数据是否已经发送过来了,以确定 GitHub 和你 Jenkins 直接的通信没有问题。
通常这个是排查问题的第一步,如果你这里都没有数据的话,那么有可能是通信都没有配置好,你需要调整前面的配置。