尽管 "Don't trigger a build on commit notifications" 仍触发 Jenkins 构建

Jenkins builds being triggered despite "Don't trigger a build on commit notifications"

我有一个检查 git 存储库的管道作业(让我们 call is "repoA") 并将其传递给其他一些下游作业 进一步处理。上游作业的脚本存储在不同的 git 回购协议(我们称之为 "repoB")。此作业配置有“轮询 SCM”选项,这样对 repoA 的任何更改都会触发它。在管道部分,我选择了 "Pipeline script from SCM" 选项并将其配置为从 repoB 的主分支获取管道脚本。我还添加了选项 "Don't trigger a build on commit notifications"。我期望的行为是推送到 repoA 的任何更改都会触发作业, 并且对 repoB 的任何更改都不会触发该作业。然而,当我按下一个 更改为 repoB,作业被触发。

我不知道这是一个错误,还是我遗漏了什么。

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

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

  • 创建一个 git 挂钩以通知 Jenkins 更改已经完成 committed/pushed:在我们这边,我们在远程 post-receive 挂钩
  • 对您的工作启用轮询,但将日程表留空
  • 在管道部分,将其配置为从您的 git 存储库(在我的示例中是 repoB)中提取 groovy 脚本,但不要添加行为:"Don't trigger a build on commit notifications"
  • 当您在脚本中检出 git 存储库(在我的示例中是 repoA)时,确保启用轮询:如果您不指定它,默认情况下它是启用的

据我了解,选项 "Don't trigger a build on commit notifications" 用于来自挂钩的通知,而不是我最初想到的来自工作轮询计划的通知。