1

我的 Jenkins 服务器未收到 git 服务器已更改内容的通知,因此未触发多分支管道作业。

配置如下:

  1. 主要的 git 服务器面向互联网并运行 gitolite。

  2. Jenkins 服务器位于防火墙后面。主 git 服务器无权访问 Jenkins 服务器,因此 git 挂钩将无法在此 git 服务器上工作。

  3. Jenkins 机器上存在一个 git 镜像,它充当 Jenkins 的只读缓存,以减少外部带宽使用。我将在其余描述中将其称为缓存。缓存正在使用 git-daemon 在内部发布。

  4. 缓存由 Jenkins 作业更新,该作业每 5 分钟运行一次,以便从主 git 服务器使用

    git remote update
    git fetch
  1. 现有的自由式项目只是轮询 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 作业来轮询缓存的更改?

4

0 回答 0