- 上下文:* 我们有一个Jenkins 2.361.3服务器和一个本地Bitbucket服务器,它带有webhook(在Push上),可以在Jenkins上为每个存储库Push触发多分支管道作业(声明性jenkinsfile模式)。为正确的分支触发构建。
- 新场景:* 我们希望在同一个Jenkins服务器上为同一个Bitbucket存储库执行第二个“夜间”多分支管道作业,我们希望在每天的固定时间为当时存在的每个分支触发该作业。
- 采取的操作:* 我们创建了第二个多分支管道作业,与第一个类似,但现在在jenkinsfile中使用了cron触发器,并且禁用了此设置:“将更改推送到BitBucket时构建”:
初始作业仍启用此设置。
- 期望值:*
1.在回购推送中,只触发初始作业,夜间作业不执行任何操作。
1.当cron时间到达时,夜间作业被触发。
- 实际值:*
1.在回购推送时,两个作业都被触发。(Jenkins重启后也是如此)
1.此外,cron触发器按预期工作。
问题: 如何配置此系统,使存储库推送仅触发初始作业,而不触发夜间作业?
看起来BitBucket插件(v223)和多分支管道插件(v716)的组合不符合“将更改推送到BitBucket时构建”设置。
- 执行的实验:*
1.为两个作业禁用“将更改推送到BitBucket时构建”设置(并重新启动Jenkins)--〉两个作业仍由存储库推送触发
1.从BitBucket中删除webhook,并为两个作业配置“轮询SCM”--〉这可以工作,但轮询感觉不是最佳的,并增加了服务器的性能损失。
1条答案
按热度按时间emeijp431#
我们使用作业Jenkins配置页面的“分支Sources”部分中的“Suppress automatic SCM triggering”属性解决了这个问题,如here所述。
“扫描多分支管道触发器”设置仅控制扫描(即使文本显示为“生成”),这将导致触发器。Suppress属性允许某个作业 * 忽略 * webhook或扫描触发器。然后该作业仅由其cron触发器触发,这正是我们所希望的。