Jenkins-Build 将更改推送到 GitHub 选项时不起作用
Jenkins-Build when a change is pushed to GitHub option is not working
Jenkins 在本地主机上 运行。
我在 GitHub 中有我的存储库。我可以选择 'Build when a change is pushed to GitHub' 检查。
当我点击 'Build Now' 时,构建成功完成,没有任何问题。但是当我将代码提交到我的存储库时,自动构建不会发生。我可以从我的系统访问 GitHub,因为存储库是 public,我相信即使 Jenkins 也应该能够检测到它。我知道有一个轮询选项,但我希望 Jenkins 在存储库中检测到更改时进行构建(因为这是我们一直在努力实现的目标)。
配置:
詹金斯 1.615
Git 插件 2.3.5
Git 客户端插件 1.17.1
——————————————————————————————————————————
EDIT:“将更改推送到 GitHub 时构建”选项已重命名为“GitGITScm 轮询的 Hub 挂钩触发器”在最新版本的 GitHub 插件中。
(感谢@smrubin 的反馈。)
我怀疑你错过了 webhook url
。
除了检查 Build when a change is pushed to GitHub
选项外,您还应该将 webhook url 添加到您的 Github 存储库中以获得 自动触发 机制工作,方法如下:
转到您的 Github 存储库:
Settings--> Webhooks&Services-->Service--> Add Services--> Choose "Jenkins (GitHub plugin)"
然后用你的 jenkins url 填写 Jenkins hook url
像这样:
http://your_jenkins_url/github-webhook/
并且,非常重要,因为您是在本地主机上安装 jenkins 服务器,请注意您不应该填写在上面的 Jenkins 钩子中 url 就像 http://localhost:8080/github-webhook/
因为 Github 无法识别 localhost
或 127.0.0.1
或 192.168.*.*
。
您应该使用外部可访问的 DNS 名称或 IP 地址,后者可以被 Github 识别。
GitHub插件(https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin)提到了两种方式:手动模式和自动模式。大型机给出了手动模式的答案。今天我发现了一些新东西。大型机添加到服务不允许我添加多个 Jenkins 的实例,所以我添加其他人添加 Webhook,如下所示。它也很好用。
我想在这里放一张照片,但我的 id 没有权限。
实际上,如果您从 Jenkins -> Github plugin configuration
(如上所述)进行 webhook 设置,您仍然会看到在 github 中创建了 webhook。所以,以上两种方法基本上做同样的事情。
我个人喜欢从 Github 创建 webhook,因为这样你就不必在 jenkins 中共享或存储 github 用户信息。
步骤:
登录 Github(使用管理员)
转到您要与 jenkins 挂钩的存储库
- 单击设置选项卡 -> Webhooks 和服务
- 单击“添加 Webhook”。
- 输入负载 url : 喜欢 : http://:8080/github-webhook/
- Select 内容类型为 json.
- 你完成了。
现在您进行更改并提交,您将看到 jenkins build get 自动触发。不要忘记在 jenkins jobs 中进行设置,以便在 github.
中推送代码时开始构建
我遇到了同样的问题并解决了。问题是 URL 必须以 /
结尾。含义:
http://<jenkinsurl>:8080/github-webhook/
✅
http://<jenkinsurl>:8080/github-webhook
❌
(注意最后缺少的 /
。)
Jenkins 在本地主机上 运行。 我在 GitHub 中有我的存储库。我可以选择 'Build when a change is pushed to GitHub' 检查。
当我点击 'Build Now' 时,构建成功完成,没有任何问题。但是当我将代码提交到我的存储库时,自动构建不会发生。我可以从我的系统访问 GitHub,因为存储库是 public,我相信即使 Jenkins 也应该能够检测到它。我知道有一个轮询选项,但我希望 Jenkins 在存储库中检测到更改时进行构建(因为这是我们一直在努力实现的目标)。
配置:
詹金斯 1.615
Git 插件 2.3.5
Git 客户端插件 1.17.1
——————————————————————————————————————————
EDIT:“将更改推送到 GitHub 时构建”选项已重命名为“GitGITScm 轮询的 Hub 挂钩触发器”在最新版本的 GitHub 插件中。 (感谢@smrubin 的反馈。)
我怀疑你错过了 webhook url
。
除了检查 Build when a change is pushed to GitHub
选项外,您还应该将 webhook url 添加到您的 Github 存储库中以获得 自动触发 机制工作,方法如下:
转到您的 Github 存储库:
Settings--> Webhooks&Services-->Service--> Add Services--> Choose "Jenkins (GitHub plugin)"
然后用你的 jenkins url 填写 Jenkins hook url
像这样:
http://your_jenkins_url/github-webhook/
并且,非常重要,因为您是在本地主机上安装 jenkins 服务器,请注意您不应该填写在上面的 Jenkins 钩子中 url 就像 http://localhost:8080/github-webhook/
因为 Github 无法识别 localhost
或 127.0.0.1
或 192.168.*.*
。
您应该使用外部可访问的 DNS 名称或 IP 地址,后者可以被 Github 识别。
GitHub插件(https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin)提到了两种方式:手动模式和自动模式。大型机给出了手动模式的答案。今天我发现了一些新东西。大型机添加到服务不允许我添加多个 Jenkins 的实例,所以我添加其他人添加 Webhook,如下所示。它也很好用。
我想在这里放一张照片,但我的 id 没有权限。
实际上,如果您从 Jenkins -> Github plugin configuration
(如上所述)进行 webhook 设置,您仍然会看到在 github 中创建了 webhook。所以,以上两种方法基本上做同样的事情。
我个人喜欢从 Github 创建 webhook,因为这样你就不必在 jenkins 中共享或存储 github 用户信息。
步骤:
登录 Github(使用管理员)
转到您要与 jenkins 挂钩的存储库
- 单击设置选项卡 -> Webhooks 和服务
- 单击“添加 Webhook”。
- 输入负载 url : 喜欢 : http://:8080/github-webhook/
- Select 内容类型为 json.
- 你完成了。
现在您进行更改并提交,您将看到 jenkins build get 自动触发。不要忘记在 jenkins jobs 中进行设置,以便在 github.
中推送代码时开始构建我遇到了同样的问题并解决了。问题是 URL 必须以 /
结尾。含义:
http://<jenkinsurl>:8080/github-webhook/
✅
http://<jenkinsurl>:8080/github-webhook
❌
(注意最后缺少的 /
。)