当 github PR 提出时触发 jenkins 构建

Posted

技术标签:

【中文标题】当 github PR 提出时触发 jenkins 构建【英文标题】:Trigger jenkins build when github PR raised 【发布时间】:2018-11-30 18:31:01 【问题描述】:

我希望 Jenkins 在创建 GitHub PR 时自动触发构建,但似乎 GitHub 无法与 Jenkins 通信,在 GitHub webhook 中收到错误 “我们无法交付此有效负载:服务超时” 在以下配置后自动创建。

我的 Jenkins 服务器位于防火墙后面,并且我已经安装并配置了“Github pull request builder”。

我已经使用 GitHub 项目和以下配置创建了一个工作。 和

Jenkins proxy test

需要任何其他配置还是我做错了什么???

【问题讨论】:

【参考方案1】:

您的 jenkins 服务器可以通过互联网访问吗?如果没有,您将需要打开防火墙以专门允许从 github IP 访问。

您可以在 api 子域的元端点上找到 github 的 IP 地址:

https://api.github.com/meta

【讨论】:

嗨 Michael,我已将 Jenkins 的 ssh 公钥存储到 Github“部署密钥”部分。如果仍需要进行更改,请建议我应该在哪里进行更改? 您需要在设置防火墙的位置进行更改。例如,如果您在 AWS 中运行,则需要编辑 EC2 实例的安全组,以允许 Jenkins 正在侦听的端口上的入站访问,除非您更改了端口,否则很可能是 8080。如果您使用的是其他主机,则需要相应地修改防火墙。 嗨迈克尔,我已经完成了所有代理配置,我的 Jenkins 可以通过互联网访问,但我仍然收到 GitHub 错误(我们无法交付此有效负载:服务超时)作为附件。我已在上述问题中附加了 Jenkins 代理测试,请查找并建议... 我认为您的代理配置是让 Jenkins 服务器 out 上网。您需要配置防火墙以允许流量进入。例如,尝试从您的手机或不在您的工作网络上的某些设备打开您的 Jenkins URL。请回复结果。 是的,你是对的,github 无法向 Jenkins 发送 post 请求,将尝试寻找可以公开开放的通信端口。谢谢@Michael !!!【参考方案2】:

在 GHPR 的“高级”选项卡中选择以下选项:

    无需询问即可自动构建每个拉取请求(危险!)。 将分支名称放入白名单目标分支。

【讨论】:

以上是关于当 github PR 提出时触发 jenkins 构建的主要内容,如果未能解决你的问题,请参考以下文章

实战:向GitHub提交代码时触发Jenkins自动构建

仅当有人打开 PR 时才运行 GitHub Action

在GitHub推送时不会触发Jenkins管道作业

针对开放 PR 提交的 Jenkins web-hook 触发器

Jenkins在收到GitHub webhook时不会触发构建

在 Github 中合并拉取请求时触发 Jenkins 构建