我有: - 公共 github 存储库 - 本地主机:8080 詹金斯 - 连接到 github 存储库的 java maven 项目 - 连接到 github 存储库的 jenkins 作业 我可以随时触发手动构建,但我希望在每次提交推送到 github 存储库时触发构建。
这里的问题是您的本地主机 Jenkins 服务器(没有任何公共 IP 地址)位于防火墙和/或 NAT 后面,因此 GitHub Webhook 无法传递到您的本地主机 Jeninks 服务器。
为了使您的公共 GitHub 存储库与本地 Jenkins 服务器(在防火墙和 NAT 等后面)通信,您需要使用名为 SocketXP 的免费 Webhook 代理服务。 SocketXP 帮助在公共 GitHub 和您的私有 Jenkins 服务器之间创建安全的 Webhook 中继隧道,通过该隧道 SocketXP 将 Webhook 通知从公共 GitHub 代理到您的本地主机 Jenkins。
SocketXP 将为您的 Jenkins 服务器创建一个唯一的公共 URL,您稍后可以使用它来配置 GitHub Webhook 设置。
以下是在 Jenkins 服务器上安装和运行 SocketXP 的 3 个简单步骤:
步骤#1:
使用 SocketXP 注册免费帐户。获取专为您分配的唯一 JWT 身份验证令牌。
步骤#2:
从此处下载简单、轻量级的 SocketXP 代理,并将其安装在运行 Jenkins 的同一台本地主机计算机上。请注意,您需要将其安装在运行 Jenkins 的主机上。
使用步骤 #1 中的 JWT 身份验证令牌通过以下命令登录 SocketXP 代理:
$ socketxp login < your-auth-token >
步骤#3:
使用以下命令获取本地 Jenkins 服务器的唯一公共 URL。
$ socketxp relay https://localhost:8080/github-webhook/
Public URL -> https://webhook.socketxp.com/adfasdfae4123-webhook-relay
使用上面唯一的公共 URL(专为您的本地主机 jenkins 服务器创建)来配置您的 GitHub webhook 设置。
如果您想在将更改推送到 GitHub 时启动构建,您需要配置 Github 的 Webhook: 前往 GitHub 存储库并单击“设置”。单击“Webhooks 和服务”选项卡,然后单击“添加服务”下拉列表。选择 Jenkins(GitHub 插件)服务。 最后,您的 Jenkins 挂钩网址:
http://JENKINS.SERVER.IP.ADDRESS:8080/github-webhook/
因此,您需要一个公共 IP 地址或 DNS 来允许 GitHub 触发您的 Jenkins 构建。
我已经用 ngrok 修复了同样的问题,你可以观看这个 YouTube 视频 https://www.youtube.com/watch?v=eGSK0oxYrS8