40

詹金斯在本地主机上运行。我在 GitHub 中有我的存储库。我可以选择“将更改推送到 GitHub 时构建”。

当我单击“立即构建”时,构建成功完成,没有问题。但是当我将代码提交到我的存储库时,不会发生自动构建。我可以从我的系统访问 GitHub,因为存储库是公开的,我相信即使 Jenkins 也应该能够检测到它。我知道有一个轮询选项,但我希望 Jenkins 在存储库中检测到更改时构建(因为这是我们一直在努力实现的目标)。

配置:

詹金斯 1.615

Git 插件 2.3.5

Git 客户端插件 1.17.1

———————————————————————————————————————————————</p>

编辑:在最新版本的 GitHub 插件中, “将更改推送到 GitHub 时构建”选项已重命名为“用于 GITScm 轮询的 GitHub 挂钩触发器”。(感谢@smrubin 的反馈。)

4

4 回答 4

76

我怀疑你错过了webhook url.

除了选中该Build when a change is pushed to GitHub选项外,您还应该将 webhook url 添加到您的 Github 存储库中以使自动触发机制起作用,方法如下:

转到您的 Github 存储库:

Settings--> Webhooks&Services-->Service--> 添加服务--> 选择“Jenkins (GitHub plugin)”

然后填写Jenkins hook url你的詹金斯网址,如下所示: http://your_jenkins_url/github-webhook/ 在此处输入图像描述


而且,非常重要,因为您在本地主机中安装 jenkins 服务器,请注意您不应该填写上面的 Jenkins 钩子 url,http://localhost:8080/github-webhook/因为 Github 无法识别localhostor127.0.0.1192.168.*.*

要么你应该使用一个外部可访问的 DNS 名称,要么使用一个 Github 可以识别的 IP 地址。

于 2015-06-01T15:49:17.763 回答
44

我有同样的问题并解决了它。问题是 URL 必须以/. 意义:

http://<jenkinsurl>:8080/github-webhook/✅</p>

http://<jenkinsurl>:8080/github-webhook❌</p>

(注意最后的缺失/。)

于 2016-03-07T22:22:26.137 回答
3

实际上,如果您从Jenkins -> Github plugin configuration(上面提到的)进行 webhook 设置,您仍然会看到在 github 中创建了 webhook。所以,以上两种方法基本上做同样的事情。

我个人喜欢从 Github 创建 webhook,因为这样你就不必在 jenkins 中共享或存储 github 用户信息。

脚步 :

  1. 登录 Github(使用管理员)

  2. 转到要与 jenkins 挂钩的存储库

  3. 单击设置选项卡-> webhook 和服务
  4. 单击添加 Webhook。
  5. 输入有效载荷 url : like : http://:8080/github-webhook/
  6. 选择内容类型为 json。
  7. 你完成了。

现在您进行更改并提交,您将看到 jenkins build 自动触发。在 github 中推送代码时,不要忘记在 jenkins 作业中进行设置以开始构建。

于 2015-12-17T09:30:02.520 回答
1

GitHub 插件(https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin)提到了两种方式:手动模式和自动模式。mainframer 给出了手动模式的答案。今天我发现了一些新东西。mainframer 的添加到服务中不允许我添加多个 Jenkins 的实例,所以我添加其他的添加 Webhook 如下图所示。它也可以正常工作。

我想在此处添加图片,但我的 ID 无权这样做。

于 2015-11-25T15:31:16.493 回答