0

詹金斯版 2.150.3

我设置了一个多分支管道。我正在使用声明性 Jenkinsfile。我有一组需要很长时间才能运行的作业。我希望这些对于任何有变化的分支都运行一整夜。

过去,可以使用“抑制自动 SCM 触发”选项和 cron 触发器来实现每晚构建具有更改的分支。(请参阅使用声明性 Jenkinsfile 在多分支管道上运行夜间作业

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

缺少“抑制自动 SCM 触发”选项的图像

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

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

如果分支中有更改,则运行以下代码。但是,Jenkins 多分支项目似乎是从推送而不是 pollSCM 触发的。如果有变化,这似乎没有达到我想要的每个分支每晚运行一次的结果。

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

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

4

1 回答 1

0

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

您可以使用以下脚本来实现此目的:

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

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

为了允许定期调度的任务在系统上产生均匀的负载,应尽可能使用符号 H(代表“哈希”)。例如,对十几个日常工作使用 0 0 * * * 将导致午夜时出现较大的峰值。相比之下,使用 HH * * * 仍然会每天执行每个作业一次,但不是同时执行一次,更好地使用有限的资源。

于 2019-08-22T10:38:29.040 回答