Jenkins正在运行localhost。 我在GitHub中有我的存储库。我可以选择在将更改推送到GitHub时进行构建。检查。
当我点击“立即构建”时,构建成功完成,没有任何问题。但是当我将代码提交到我的存储库时,不会发生自动构建。我可以从我的系统访问GitHub,因为存储库是公共的,我相信甚至Jenkins也应该能够检测到它。我知道有一个轮询选项,但我希望Jenkins在存储库中检测到更改时进行构建(因为这是我们一直试图实现的)。
配置:
Jenkins 1.615
Git插件2.3.5
Git客户端插件1.17.1
--------------------------------------------
编辑:" 将更改推送到GitHub后构建"选项已重命名为" 用于GITScm轮询的GitHub挂钩触发器"在最新版本的GitHub插件中。 (感谢@ smrubin的反馈。)
答案 0 :(得分:69)
我怀疑你错过了webhook url
。
除了检查Build when a change is pushed to GitHub
选项之外,您还应该将webhook网址添加到您的Github存储库中以使自动触发机制起作用,具体方法如下:
转到Github存储库:
设置 - >网络挂接和放大器;服务 - >服务 - >添加服务 - >选择" Jenkins(GitHub插件)"
然后用您的jenkins网址填写Jenkins hook url
,如下所示:
http://your_jenkins_url/github-webhook/
并且,非常重要,因为您在本地主机中安装了jenkins服务器,请注意您不应该填写Jenkins挂钩网址上面的内容http://localhost:8080/github-webhook/
因为Github无法识别localhost
或127.0.0.1
或192.168.*.*
。
您应该使用外部可访问的DNS名称或IP地址,Github可以识别这些名称。
答案 1 :(得分:30)
我有同样的问题并解决了它。问题是网址必须以/
结尾。含义:
http://<jenkinsurl>:8080/github-webhook/
工作。
http://<jenkinsurl>:8080/github-webhook
没有。 (注意最后丢失的/
。)
答案 2 :(得分:2)
实际上,如果你从Jenkins -> Github plugin configuration
(如上所述)进行webhook设置,你仍会看到在github中创建了webhooks。所以,上面两种方法基本上做同样的事情。
我个人喜欢从Github创建webhook,因为这样你就不必在jenkins中共享或存储github用户信息。
步骤:
登录Github(使用管理员)
转到要与jenkins挂钩的存储库
现在您进行更改并提交,您将看到jenkins自动构建获取触发器。不要忘记在jenkins作业中进行设置,以便在github中推送代码时启动构建。
答案 3 :(得分:1)
GitHub插件(https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin)提到了两种方式:手动模式和自动模式。 mainframer给出了手动模式的答案。今天我找到了新的东西。 mainframer添加到服务中并不允许我添加多个Jenkins的实例,因此我添加了其他添加Webhook,如下所示。它也可以正常工作。
我想在这里添加一张图片,但我的ID没有权利这样做。