jenkins - 在 Jenkins 中使用 pollSCM 和 Scan Multibranch Pipeline Triggers 有什么区别?
问题描述
我一直在使用 Jenkins,并且我已经看到了很多 Pipeline 示例(声明性示例),并且我已经看到一些使用该pollSCM
属性Jenkinsfile
来触发构建,如下所示:
triggers {
pollSCM('H/5 * * * *')
}
但是,我在配置 Multibranch 管道时看到了这个 Scan Multibranch Pipeline Triggers 选项。我不确定它们之间有什么区别。
所有这些问题都出现在我身上,因为我面临一些情况,即为同一个工作触发了两个构建,我认为这是因为我配置了这两个选项。
谁能帮我理解这个区别?
谢谢!
解决方案
“扫描多分支管道”触发器将扫描存储库以查找新分支和现有分支中的更改。默认情况下,它将为所有已更新的分支触发新构建。但是,在多分支作业配置中,您可以为特定或所有分支禁用此自动触发器。
“轮询 SCM”选项是特定于分支的。在 Jenkinsfile 中,您可以为不同的分支配置不同的选项。此选项将永远无法触发分支的第一个构建,因为它需要至少一个构建才能properties
执行该步骤并设置“轮询 SCM”选项。也就是说:这里的任何更改都只会在下一次构建后生效。
因此,如果可能的话,我建议坚持基于 Multibranch 分支扫描的触发器。然而,在某些特殊情况下(例如,第一次构建新分支永远不会自动构建)使用轮询 SCM 功能仍然可能有用。在这种情况下,您可能希望根据需要禁用自动触发器。
最后但并非最不重要的一点是,poll SCM 功能有时会使用与 Scan Multibranch Pipeline 不同的插件,例如 Bitbucket。AFAIK for Bitbucket 的多分支触发器更灵活一点,与普通的 Bitbucket 触发器相比,允许在更多事件上触发构建。
推荐阅读
- node.js - Dynamodb - 使用 IN 运算符 ['shirt','pant'] 获取所有项目,Js
- docker - Docker Container 使用不同的工具显示不同的 CPU 使用率
- typescript - 在类上实现时,接口属性不强制执行 getter 和 setter
- mysql - 由于在用户名的 fromt 中添加了空格,使用 python 子进程导入 mysqldump 访问权限失败
- vue.js - Vuejs缓存全局变量
- javascript - 对子目录中的 .js 文件使用 require() 时出现 MODULE_NOT_FOUND 错误
- python - 标题中的图片使用 python-docx 隐藏 docx 中的第一张图片
- selenium - 如何使用 selenium webdriver 获取“li”元素列表的计数?
- constructor - 是否可以为 Immutables 构建器生成公共默认构造函数以及静态工厂方法?
- docker - Verdaccio 创建用户以在 GitLab CI 任务中发布包