有条件触发Jenkins多分支流水线

13

我有一个参数化的Jenkins多分支流水线,使用GitHub仓库作为Jenkinsfile和一些脚本的源代码。该流水线已配置为在分支和拉取请求的Webhooks触发时启动,但我还希望针对主分支进行参数化的定时触发器,具体来说是每周工作日的每4小时一次。

我正在使用声明性流水线语法,但如果必要,也可以使用脚本式流水线。

我正在使用parameterized scheduler plugin实现带参数的cron触发器。

此流水线示例捕获了我的需求,但不受支持:

pipeline {
  triggers {
    when { branch "master" }
    parameterizedCron('H */4 * * 1-5 % ABC=XYZ')
  }
  stages {
  // do something
  }
}

这个功能有一个未解决的Jenkins问题:JENKINS-42643,但似乎没有在开发中。


2
https://dev59.com/cFkT5IYBdhLWcg3wB7Is#44902622 - rohit thomas
1个回答

18

使用三元运算符在我的用例中起作用了。构建仅计划在主分支上:

pipeline {
  triggers {
    parameterizedCron(env.BRANCH_NAME == 'master' ? '''
# schedule every 4hours only on weekdays
H */4 * * 1-5 % ABC=XYZ''' : '')
  }
  parameters {
    string(name: 'ABC', defaultValue: 'DEF', description: 'test param')
  }
  stages {
    // do something
  }
} 

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