我有一个新签入的 GitHub 挂钩,但 Jenkins 没有收到它(在 RedHat OpenShift 盒式磁带上运行)。
设置
- 运行 Jenkins 的 RedHat OpenShift 盒式磁带
- 詹金斯插件在玩
- GitHub插件 v1.8
- Github 身份验证插件 v0.14
- Jenkins GIT 客户端插件 v1.4.5
- 詹金斯 GIT 插件 v2.0
- 公共 GitHub 存储库
调试
我已将其范围缩小到 GitHub 与 OpenShift 的通信,但不确定如何进一步排除故障或解决问题。为了缩小范围,我执行了以下步骤:
- 在 GitHub 中配置以下每种类型的 Service Hook 中的一种,并在 RequestBin 中捕获结果
- 网络挂钩网址
- 詹金斯 GitHub 插件
- 詹金斯 Git 插件
- 然后我从 GitHub 运行了 Test Hook
- 我从每个 RequestBin 中获取了生成的标头和有效负载,并在 Fiddler 中手动创建了一个指向 webhook 端点的 POST 请求
- 我通过登录com.cloudbees.jenkins.GitHubWebHook看到了对 Jenkins 的一些操作
然而,来自 GitHub 的测试钩子和检入存储库从未到达服务器,至少日志没有证明这一点。
我相信我已将其范围缩小到 SSL 问题。GitHub 不会将 webhook 发布到配置了 OpenShift 的 Jenkins 插件,因为它只响应 SSL/HTTPS。我不确定罐装 Jenkins 墨盒的具体配置方式,或者如何更改它是否使用 SSL。
可以更改 OpenShift 卡式盒是否使用 SSL,但我不想花时间进入它。解决方案是创建您自己的墨盒定义,您可以在其中指定所有设置,特别是创建哪些端点。这是生成正确端点的 OpenShift 参考,以防有人想走那条路。