使用声明性Jenkinsfile在多分支管道上运行每晚作业

时间:2018-08-09 14:34:16

标签: jenkins jenkins-pipeline jenkins-declarative-pipeline

Jenkins版本2.121.2

我建立了多分支管道。我正在使用声明性的Jenkinsfile。

我有一组测试,这些测试需要很长时间才能运行。我希望这些通宵查询所有有变化的分支。

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

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

  • 将“扫描多分支管道触发器”>“如果没有运行则定期运行”设置为1分钟(仅出于测试目的,我会在工作时增加此值)

在我的Jenkinsfile文件中(凌晨4点运行的示例),我还尝试了pollSCM()

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

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

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

我在做什么错了?


编辑:

因此,我尝试了此设置:

将cron设置为每15分钟一次

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

删除了“禁止自动SCM触发”用户界面中“配置”下的设置

但是它只是在发生分钟轮询(此测试中每小时的16分钟)后才开始运行。

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

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


再次编辑!:

因此,在上一次编辑时,它实际上立即运行,然后在cron时再次运行。

现在,在用户界面中再次启用了“禁止自动SCM触发”设置。

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

1 个答案:

答案 0 :(得分:0)

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

pipeline {
    triggers {
        cron('45 6 * * 1-5')
    }
    agent {
    ...
相关问题