我有: - 一个公共github存储库 - 当地主持人:8080詹金斯 - 连接到github存储库的java maven项目 - 连接到github仓库的jenkins工作 我可以随时触发手动构建,但我希望在每个提交时触发一个构建,推送到github存储库。
答案 0 :(得分:3)
如果要在将更改推送到GitHub时启动构建,则需要配置Github的Webhook: 转到GitHub仓库,然后单击“设置”。点击Webhooks& “服务”选项卡,然后是“添加服务”下拉列表。选择Jenkins(GitHub插件)服务。 最后,你的Jenkins钩子网址:
http://JENKINS.SERVER.IP.ADDRESS:8080/github-webhook/
因此,您需要一个公共IP地址或DNS来允许GitHub触发您的Jenkins构建。
答案 1 :(得分:1)
jenkins中有一个选项" Build Triggers"您可以在将更改推送到GitHub"时检查"构建。这将轮询github存储库以获取任何更改。如果发现任何更改,将自动触发构建。
您也可以配置计划以轮询SCM。
答案 2 :(得分:0)
这里的问题是您的localhost Jenkins服务器(没有任何公共IP地址)位于防火墙和/或NAT之后,因此GitHub webhook无法传递到您的localhost Jeninks服务器。
为了使您的公共GitHub存储库与本地Jenkins服务器(在防火墙和NAT等之后)通信,您需要使用名为SocketXP的免费Webhook代理服务。 SocketXP有助于在公共GitHub和您的Private Jenkins服务器之间创建安全的Webhook中继隧道,SocketXP将通过该隧道将公共GitHub的Webhook通知代理到您的本地主机Jenkins。
SocketXP将为您的Jenkins服务器创建一个唯一的公共URL,您可以在以后用于配置GitHub Webhook设置。
以下是在Jenkins服务器上安装和运行SocketXP的三个简单步骤:
步骤1:
使用SocketXP注册一个免费帐户。获取为您分配的唯一JWT身份验证令牌。
步骤2 :
从here下载一个简单,轻巧的SocketXP代理,并将其安装在运行Jenkins的同一台localhost计算机上。请注意,您需要在运行Jenkins的主机上安装它。
使用步骤1中的JWT身份验证令牌通过以下命令登录SocketXP代理:
$ socketxp login < your-auth-token >
第3步:
使用以下命令为您的localhost Jenkins服务器获取唯一的公共URL。
$ socketxp relay https://localhost:8080/github-webhook/
Public URL -> https://webhook.socketxp.com/adfasdfae4123-webhook-relay
使用上述唯一的公共URL (仅为您的localhost jenkins服务器创建)来配置GitHub webhook设置。
在此处了解更多信息: how to setup GitHub Webhook with localhost Jenkins