如何解决无法从 git 镜像触发 Jenkins MultiBranch Pipeline 作业
我的 Jenkins 服务器未收到 git 服务器已更改内容的通知,因此未触发多分支流水线作业。
配置如下:
-
主 git 服务器面向互联网并运行 gitolite。
-
Jenkins 服务器位于防火墙后面。主 git 服务器无法访问 Jenkins 服务器,因此 git hooks 将无法在该 git 服务器上工作。
-
Jenkins 机器上存在一个 git 镜像,它充当 Jenkins 的只读缓存,以减少外部带宽使用。在其余的描述中,我将把它称为缓存。缓存正在使用 git-daemon 在内部发布。
-
缓存由每 5 分钟运行一次的 Jenkins 作业更新,使用
从主 git 服务器更新它
git remote update
git fetch
- 现有的自由式项目只是轮询 git 缓存以在缓存中出现更改时触发自己。 这可以正常工作。
该问题源于最近创建的 MultiBranch 管道作业。我无法确定在缓存更改时触发这些作业的方法。我更喜欢使用 git 缓存中的 git 钩子,并尝试设置 post-receive
钩子,其中包含:
curl <jenkins server url>/git/notifyCommit?url=<cache url>/<project name>
手动运行此 post-receive
确实会触发正确的 Jenkins 作业,包括 MultiBranch Pipeline 作业,因此 post-receive
中的命令是正确的。但是当缓存更新时,该钩子不会运行。我可以使用其他任何钩子来触发构建吗?如果没有合适的钩子,有没有什么办法可以设置一个 MultiBranch Pipeline 作业来轮询缓存的变化?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。