Jenkins流水线条件分支构建

9
使用多分支流水线,我想根据触发构建的 git 分支,触发略有不同的构建和部署程序。
我能想到的两种方法是: 1)在每个分支中使用不同的 Jenkins 文件。 2)在 Jenkins 文件中使用一系列 when {branch 'X'} 块。
第一种方法意味着当合并分支时需要小心,因为我知道自己会在某个时刻忘记它。
第二种方法非常混乱,但确实只需使用一个 Jenkins 文件。
我无法相信没有比这两种方法更好的方式。
2个回答

29

虽然我不是DevOps专家,但我建议在您的流水线中使用when条件,以便只有当when条件满足时才触发某些阶段。

pipeline {

    triggers {
      # triggered by changes in every branch
    }
    stages {
      stage('first-stage'){
        when { anyOf { branch 'feature-branch/*'; branch 'master' } }
        steps{
          ....
        }
      }
      stage('second-stage'){
        when {
          not {
            branch 'release/*'
          }
          not {
            branch 'staging'
          }
        }
        steps{
          ....
        }
      }

    }
}

或者您可以使用job-builder插件创建多个作业模板。然后,您可以创建不同的项目并使用不同的分支参数使作业模板实体化。这有点复杂,我更倾向于上面提到的“带有when条件的流水线”。

这个链接也可能会有所帮助: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/


文档说明 branch 条件仅适用于多分支流水线。 - SalahAdDin

0

这对我有用

when {
                expression {
                    return env.GIT_BRANCH == "origin/master"
                }
            }

请确保在Jenkins配置Git SCM时选择的分支为master


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