使用声明性Jenkinsfile在多分支管道上运行夜间作业,而无需使用“禁止自动SCM触发”功能

时间:2019-08-15 18:51:52

标签: jenkins jenkins-pipeline multibranch-pipeline nightly-build

詹金斯版2.150.3

我建立了多分支管道。我正在使用声明性的Jenkinsfile。我有一些工作需要很长时间才能完成。我希望这些通宵查询所有有变化的分支。

过去,人们可以结合使用“抑制自动SCM触发”选项和cron触发来实现具有变化的分支的夜间构建。 (请参见Run nightly jobs on multibranch pipeline with declarative Jenkinsfile

我不再有权使用“禁止自动SCM触发”选项。

Image of missing 'Suppress automatic SCM triggering' option

即使分支中的代码没有更改,以下触发器也将运行。

triggers {
    cron('H 0 * * * *')
}

如果分支中有更改,则会运行以下代码。但是,Jenkins多分支项目似乎是由推动而不是pollSCM触发的。如果发生更改,这似乎无法达到我期望的每个分支每晚运行一次的结果。

triggers {
    pollSCM('H 0 * * * *')
}

仅当该分支中存在更改时,我如何配置Jenkins才能实现每个分支的夜间作业?

1 个答案:

答案 0 :(得分:0)

将评论中的答案添加到此处。

您可以通过使用以下脚本来实现:

triggers {
  pollSCM ignorePostCommitHooks: true, scmpoll_spec: 'H H * * *'
}

使用指令生成器(可在<yourJenkinsUrl>/directive-generator/获得,您可以生成实例中可用的脚本+参见一些文档,例如:

  

为了允许定期计划的任务在服务器上产生均匀的负载   在系统中,应尽可能使用符号H(“哈希”)。   例如,将0 0 * * *用于一打日常工作将导致大量   在午夜飙升。相反,使用H H * * *仍将执行   每个工作每天一次,但不能同时完成,最好使用   资源有限。