有条件地触发Jenkins多分支管道

Zac*_*Weg 5 jenkins jenkins-pipeline

我有一个参数化的Jenkins多分支管道,使用GitHub存储库作为Jenkinsfile和一些脚本的源。管道配置为在Webhooks上触发分支和请求请求,但我也希望仅对master分支(特别是在工作日每4小时)使用参数化的cron触发器。

我正在使用声明性管道语法,但如有必要,我愿意使用脚本化管道。

我正在使用参数化的调度程序插件来实现带有参数的cron触发器。

该管道示例捕获了我试图实现的目标,但不支持该目标:

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

Jenkins对此功能有一个未解决的问题:JENKINS-42643,但它似乎尚未开发。

Zac*_*Weg 12

使用三元运算符适用于我的用例。只为 master 分支安排构建:

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
  }
} 
Run Code Online (Sandbox Code Playgroud)