GitHub post-未在 Windows 上触发接收挂钩
GitHub post-receive hook not triggered on Windows
我正在尝试使用 post-receive git-hook 通过触发我设置的 Jenkins 管道来自动部署一个简单的 Maven 项目。源代码托管在 GitHub 存储库上,而 Jenkins 托管在我 PC 上的容器 运行ning 上。目前为止我push到master分支后钩子没有触发
事实是,如果我尝试 运行 手动编写脚本,它就可以正常工作!我还尝试使用 Git Bash(毕竟我在 Windows)设置 chmod +x 到 post-receive 文件,不幸的是没有成功:钩子仍然可以不会被触发。可能是什么问题?
我已经尝试在 Whosebug 上寻找类似主题的答案,但没有解决我的问题。仅供参考,在 post-receive 脚本下方(如您所见,没什么特别的):
#!/bin/bash
JENKINS_URL="http://localhost:8080"
JOB="deploy-to-slave-pipeline"
JENKINS_CREDENTIALS="theuser:11d422ee679503eeb328c5b1998327cc7f"
echo "Triggering Jenkins job..."
crumb=$(curl -u "$JENKINS_CREDENTIALS" -s '$JENKINS_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
curl -u $JENKINS_CREDENTIALS -H "$crumb" -X POST "$JENKINS_URL/job/$JOB/build?delay=0sec"
编辑
正如@bk2204 所指出的,post-receive
是一个服务器端挂钩。我需要的是一个 webhook,它可以在 GitHub 存储库的 Settings/Webhook 页面中设置。只需如下配置它,其中 Payload URL 是你的 Jenkins URL 然后是 /github-webhook/
:
然后您所要做的就是将您的 Jenkins 作业设置为由 GitHub 触发,方法是检查 Build Triggers 部分的相关选项,如下所示:
然后就可以开始了!此外,如果您 运行 在本地部署您的 Jenkins 实例,您可以使用 ngrok 公开它并测试您的 CI/CD 管道!
[参考。 https://dzone.com/articles/adding-a-github-webhook-in-your-jenkins-pipeline]
post-receive
挂钩是 运行 在服务器端,而不是在客户端。这意味着它是 运行 在 GitHub,假设你要推送到 GitHub,蚂蚁不在你的本地机器上。
通常,您需要一个 GitHub webhook 来通知您推送事件,但您不能在这里使用,因为机器 运行ning 在本地主机上,这样的事件必须能够在 public IP 地址上访问,因为 GitHub 必须向它发送 HTTP 请求。
我正在尝试使用 post-receive git-hook 通过触发我设置的 Jenkins 管道来自动部署一个简单的 Maven 项目。源代码托管在 GitHub 存储库上,而 Jenkins 托管在我 PC 上的容器 运行ning 上。目前为止我push到master分支后钩子没有触发
事实是,如果我尝试 运行 手动编写脚本,它就可以正常工作!我还尝试使用 Git Bash(毕竟我在 Windows)设置 chmod +x 到 post-receive 文件,不幸的是没有成功:钩子仍然可以不会被触发。可能是什么问题?
我已经尝试在 Whosebug 上寻找类似主题的答案,但没有解决我的问题。仅供参考,在 post-receive 脚本下方(如您所见,没什么特别的):
#!/bin/bash
JENKINS_URL="http://localhost:8080"
JOB="deploy-to-slave-pipeline"
JENKINS_CREDENTIALS="theuser:11d422ee679503eeb328c5b1998327cc7f"
echo "Triggering Jenkins job..."
crumb=$(curl -u "$JENKINS_CREDENTIALS" -s '$JENKINS_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
curl -u $JENKINS_CREDENTIALS -H "$crumb" -X POST "$JENKINS_URL/job/$JOB/build?delay=0sec"
编辑
正如@bk2204 所指出的,post-receive
是一个服务器端挂钩。我需要的是一个 webhook,它可以在 GitHub 存储库的 Settings/Webhook 页面中设置。只需如下配置它,其中 Payload URL 是你的 Jenkins URL 然后是 /github-webhook/
:
然后您所要做的就是将您的 Jenkins 作业设置为由 GitHub 触发,方法是检查 Build Triggers 部分的相关选项,如下所示:
然后就可以开始了!此外,如果您 运行 在本地部署您的 Jenkins 实例,您可以使用 ngrok 公开它并测试您的 CI/CD 管道!
[参考。 https://dzone.com/articles/adding-a-github-webhook-in-your-jenkins-pipeline]
post-receive
挂钩是 运行 在服务器端,而不是在客户端。这意味着它是 运行 在 GitHub,假设你要推送到 GitHub,蚂蚁不在你的本地机器上。
通常,您需要一个 GitHub webhook 来通知您推送事件,但您不能在这里使用,因为机器 运行ning 在本地主机上,这样的事件必须能够在 public IP 地址上访问,因为 GitHub 必须向它发送 HTTP 请求。