在 Jenkins 中使用 pollSCM 和扫描多分支管道触发器有什么区别?



我一直在使用 Jenkins,我看过很多管道示例(声明式示例(,我看到一些在Jenkinsfile中使用pollSCM属性来触发构建,如下所示:

triggers {
pollSCM('H/5 * * * *')
}

但是,我在配置多分支管道时看到了此扫描多分支管道触发器选项。我不确定它们之间有什么区别。

所有这些问题都出现在我身上,因为我面临着为同一作业触发两个构建的情况,我认为这是因为我配置了这两个选项。

谁能帮我理解这种区别?

谢谢!

扫描多分支管道触发器

"扫描多分支管道"触发器将扫描存储库以查找新分支和现有分支中的更改。默认情况下,它将为所有已更新的分支触发新版本。但是,在多分支作业配置中,您可以为特定或所有分支禁用此自动触发器。但是,请注意,您必须为存储库设置 Web 钩子,以便 Jenkins 收到任何更改的通知。由于钩子设置将取决于用于签出 Jenkinsfile 的 Jenkins 插件以及 Git 服务器,因此您必须相应地查找它。

轮询供应链管理

pollSCM触发器是特定于分支的。在 Jenkinsfile 中,您可以为不同的分支配置不同的选项。此选项永远无法触发分支的第一个构建,因为它至少需要一个构建,以便执行properties步骤并设置pollSCM选项。也就是说:此处的任何更改只有在下一次构建后才会生效。

可以通过两种方式使用pollSCM触发器:

  • 真正的轮询。也就是说:告诉 Jenkins 在特定时间间隔内检查存储库是否有更改。
  • 等待某个存储库挂钩的通知。为此,您需要
    1. 将传递给pollSCM的字符串保留为空:
      triggers {
      pollSCM('')
      }
      
    2. 在 git 服务器上设置一个钩子来通知 Jenkins(请参阅如何配置 Git 提交后钩子(

建议

因此,如果可能的话,我建议坚持使用基于多分支扫描的触发器。但是,在某些特殊情况下(例如,如果新分支上的第一个构建永远不应该自动构建(,使用轮询 SCM 功能仍然可能很有用。在这种情况下,您可能希望根据需要禁用自动触发器。

最后但并非最不重要的一点是,轮询 SCM 功能可能使用与扫描多分支管道不同的插件,例如 Bitbucket。 AFAIK 对于 Bitbucket 的多分支触发器更加灵活,与普通 Bitbucket 触发器相比,允许在更多事件上触发构建。

我认为pollSCM一定是jenkins插件

https://wiki.jenkins.io/display/JENKINS/PollSCM+Plugin

多分支管道:这是一种管道类型,jenkins 从存储库中的所有分支扫描和拉取,因此当分支内签入某些代码时(如果您已配置它(时,构建将自动触发

最新更新