尽管“不要在提交通知上触发构建”,但 Jenkins 构建仍被触发

CD8*_*D83 5 git jenkins jenkins-pipeline

我有一个管道作业,用于签出 git 存储库(我们称之为“repoA”)并将其传递给其他一些下游作业以进行进一步处理。上游作业的脚本存储在不同的 git 存储库中(我们称之为“repoB”)。该作业配置有“轮询 SCM”选项,以便对 repoA 的任何更改都会触发它。在管道部分中,我选择了“来自 SCM 的管道脚本”选项并将其配置为从 repoB 的 master 分支获取管道脚本。我还添加了选项“不要触发提交通知上的构建”。我期望的行为是推送到 repoA 的任何更改都会触发该作业,而对 repoB 的任何更改都不会触发该作业。然而,当我将更改推送到 repoB 时,就会触发该作业。

我不知道这是一个错误,还是我遗漏了一些东西。

我正在运行 Jenkins 2.7.4。我的主 Jenkins 运行在 Ubuntu 服务器 16.04.1 LTS 上。我的所有 Jenkins 插件都是最新的。

CD8*_*D83 1

经过与 Jenkins 邮件列表的一些交流后,我现在更好地了解了事情是如何工作的,所以这里是我必须做的,以防其他人需要它:

  • 创建一个 git hook 来通知 Jenkins 更改已提交/推送:在我们这边,我们在远程创建了一个 post-receive hook
  • 对您的作业启用轮询,但将计划留空
  • 在“管道”部分中,将其配置为从 git 存储库中提取 groovy 脚本(在我的示例中为 repoB),但不要添加行为:“不要在提交通知上触发构建”
  • 确保在脚本中签出 git 存储库(在我的示例中为 repoA)时启用轮询:默认情况下,如果您不指定它,则启用轮询

据我了解,“不要触发提交通知上的构建”选项适用于来自挂钩的通知,而不是我首先想到的来自作业轮询计划的通知。