4

詹金斯版本 2.121.2

我设置了一个多分支管道。我正在使用声明性 Jenkinsfile。

我有一组测试需要很长时间才能运行。我希望这些对于任何有变化的分支都运行一整夜。

我尝试了一些事情,但我目前的失败尝试是:

  • 在作业 > 配置下,我启用了“抑制自动 SCM 触发”

  • 将 'Scan Multibranch Pipeline Triggers' > 'Periodically if not else run' 设置为 1 分钟(仅用于测试,我会在它工作时增加它)

在我的 Jenkinsfile(凌晨 4 点运行的示例)中,我也尝试过pollSCM()

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

在“扫描多分支管道日志”中,我看到以下内容,但凌晨 4 点没有作业运行(trigger()在我的 Jenkinsfile 中的时间):

Changes detected: my-feature-branch (1234567890abcdefgh → abcdefgh123456789)
Did not schedule build for branch: my-feature-branch

请问我做错了什么?


编辑:

所以我尝试了这个设置:

将 cron 设置为每 15 分钟一次

triggers {
  cron('5,20,35,50 * * * *')
}

删除了 UI 'Suppress automatic SCM triggering' 中配置下的设置

但它只是在轮询发生的那一刻开始运行(在这个测试中是每小时 16 分钟)。

我什么都不做似乎注意我的 cron 设置?

如果我在 UI 的分支作业下进入“查看配置”,它会显示我的 Jenkinsfile 中的 UI 设置。


编辑(再次!):

因此,在最后一次编辑中,它确实立即运行,然后在 cron 时间再次运行。

现在在 UI 中再次启用设置“抑制自动 SCM 触发”。

我让它工作了!我意识到的主要问题 (a) 没有应用更改我认为直到第一次运行后运行 Jenkinsfile 发生更改?(b) 我还安装了下一个执行插件,以便更好地了解它的计划。

4

1 回答 1

2

这里的问题是 multibranchPipelineJob 中声明的触发器用于扫描多分支。要定期运行作业,请在管道中声明触发器,如下所示:

pipeline {
    triggers {
        cron('45 6 * * 1-5')
    }
    agent {
    ...
于 2019-08-27T09:11:44.660 回答