首页 > 解决方案 > 在 Jenkins 中使用 pollSCM 和 Scan Multibranch Pipeline Triggers 有什么区别?

问题描述

我一直在使用 Jenkins,并且我已经看到了很多 Pipeline 示例(声明性示例),并且我已经看到一些使用该pollSCM属性Jenkinsfile来触发构建,如下所示:

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

但是,我在配置 Multibranch 管道时看到了这个 Scan Multibranch Pipeline Triggers 选项。我不确定它们之间有什么区别。

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

谁能帮我理解这个区别?

谢谢!

标签: jenkinsjenkins-pipeline

解决方案


“扫描多分支管道”触发器将扫描存储库以查找新分支和现有分支中的更改。默认情况下,它将为所有已更新的分支触发新构建。但是,在多分支作业配置中,您可以为特定或所有分支禁用此自动触发器。

“轮询 SCM”选项是特定于分支的。在 Jenkinsfile 中,您可以为不同的分支配置不同的选项。此选项将永远无法触发分支的第一个构建,因为它需要至少一个构建才能properties执行该步骤并设置“轮询 SCM”选项。也就是说:这里的任何更改都只会在下一次构建后生效。

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

最后但并非最不重要的一点是,poll SCM 功能有时会使用与 Scan Multibranch Pipeline 不同的插件,例如 Bitbucket。AFAIK for Bitbucket 的多分支触发器更灵活一点,与普通的 Bitbucket 触发器相比,允许在更多事件上触发构建。


推荐阅读