11

问题:

我正在使用 CI 设置来配置 github - Jenkins Web 挂钩,用于通过 github 上的代码提交触发构建。以下是当前配置详细信息

  • 我的 Jenkins 在 AWS 私有子网中
  • 我有插件:“GitHub Web Hook”配置了 API URL、用户名和 OAuth 令牌,测试凭据给出了成功消息。
  • 我在“构建触发器”下选择了“将更改推送到 GitHub 时构建”

Jenkins 的工作与手动构建完美配合。但是当在 github 上完成代码提交时,它不起作用(自动构建触发器)。

需要帮助:

  1. 我该如何详细调试这种情况,如果“Git hub webhook”配置测试有效,我可以说 git hub 能够连接到我的 Jenkins 吗?
  2. 请纠正/指导步骤以使其正常工作
4

2 回答 2

10

在花费了一些忙碌的时间之后,我已经将其置于工作状态。以下只是我所做的总结:

  • 您可以通过两种方式完成,轮询 SCM 或 WebHooks(在此处解释)
  • JenkinsURL/job/job-Name/scmPollLog 是检查轮询日志的地方
  • 我已将我的 Jenkins 移入公共子网(github 需要与 jenkins 交谈)
  • 转到https://github.com/settings/tokens并创建您的访问令牌
  • 在 Jenkins > 管理 Jenkins > 配置系统 > 配置 GitHub Web Hook,API URL - “ https://api.github.com ” 用户名 - 你的 github 用户名,上面创建的 OAuth 令牌 - 测试它是否成功!
  • 导航到作业配置并在构建触发器下,选择“将更改推送到 GitHub 时构建”
  • 转到https://github.com/yourID/repoName/settings/hooks并添加一个 webhook
Payload URL - http://jenkinsIP:port/github-webhook/
Content type - application/x-www-form-urlencoded
Secret - none
Which events would you like to trigger this webhook? - Just the push event
Active > Add webhook

您可以检查将更改提交到 github,然后 github 将向您的 jenkins 服务器发送一个 POST 请求,该请求将触发构建。您可以在“最近交付”部分查看日志。

在此处输入图像描述

如果可以对私有 jenkins 服务器执行相同的操作,例如使用端口转发或任何其他方式。请更新。

于 2015-06-16T10:57:46.447 回答
3

鉴于这个已经闲置了一段时间,我将扩展cody.codes评论。您可以配置一个 webhook 有效负载交付服务,例如smee.io,它将拦截 GitHub 触发的 webhook。

这篇Jenkins 文章详细概述了设置说明,但简化的概述是:

  1. 发生 SCM 更改等 GitHub 事件,并触发一个 webhook 触发到您配置的 Smee 通道
  2. Smee 频道(下图中的蓝色框)接收此 webhook
  3. Jenkins 服务器订阅了您的自定义 smee 频道,发现那里有新事件,并触发您的工作。

GitHub、Smee 和 Jenkins 之间通信的简化可视化概览

Jenkins 仅在此设置中建立出站连接(订阅您的 Smee 频道所必需的),因此您的 Jenkins 服务器可以保留在防火墙后面。

于 2021-04-06T12:02:46.303 回答