Jenkins声明式流水线支持每个分支不同的触发器。

6
我希望在 Jenkins 的声明性流水线作业中为每个分支实现不同的 cron 触发器。目前,我只在 dev 分支上触发每小时构建:
String cron_string = BRANCH_NAME == "dev" ? "@hourly" : ""

pipeline {

   triggers {
        cron(cron_string)
   }

   //stages, options and more code here...

}

我的目标是拥有两个不同的cron字符串,可以在不同的分支中的不同时间触发构建(例如:在dev中每小时构建,在master中每三小时构建),但执行方式相同。我的问题是,我是否可以像下面的代码块那样做,还是应该采取不同的方法?

String cron_string_1 = BRANCH_NAME == "dev"     ? "0 8/20 ? * MON-FRY" : ""
String cron_string_2 = BRANCH_NAME == "master"  ? "0 8/20/3 ? * MON-FRY" : ""


pipeline {

   triggers {
        cron(cron_string)
   }

   //stages, options and more code here...

}

嗨Jose,这里最好的做法是为每个分支使用不同的触发器设置多分支流水线(Jenkinsfile会略有不同,但这就是多分支流水线的意义所在)。 - hakamairi
你有没有找到解决这个问题的方法? - emmdee
我们最终为每个分支创建了一个Jenkinsfile,并为它们创建了单独的作业。 - José Raúl Ruiz García
1个回答

0
这是我使用脚本管道成功的方法:
if (BRANCH_NAME == "dev") {
    properties(
        [
            pipelineTriggers([cron('0 8,13,17 * * *')])
        ]
    )
}

这对于多个分支是行不通的。假设dev分支构建了第一个任务,管道将运行并按照cron计划下一次构建。现在,无论哪个分支构建下一个任务,它都将按照dev分支cron计划运行。主分支cron也是如此。 - Dibakar Aditya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接