Jenkins管道条件分支构建

时间:2018-02-16 13:40:08

标签: jenkins continuous-integration jenkins-pipeline

使用multibranch管道我想触发一个稍微不同的构建和部署过程,具体取决于哪个git分支触发了构建。

我能想到的两种方法是: 1)在每个分支中使用不同的jenkins文件 2)在jenkins文件中使用一系列{branch'X'}块

第一种方法意味着我在合并分支时需要小心,我知道我会忘记在某些时候。

第二种方法非常混乱,但这意味着我只能使用一个Jenkins文件。

我无法相信没有比这两种方法更好的方法。

2 个答案:

答案 0 :(得分:8)

即使我不是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插件创建多个作业模板。然后,您可以创建具有不同分支参数的不同项目,从而实现作业模板这有点复杂,我会选择"管道与条件"以上。

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

答案 1 :(得分:0)

这对我有用

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

确保在 Jenkins 配置 Git SCM 中选择的分支是master