Jenkins管道条件分支构建

And*_*ich 1 continuous-integration jenkins jenkins-pipeline

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

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

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

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

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

Mua*_*tik 11

即使我不是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{
          ....
        }
      }

    }
}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用job-builder插件创建多个作业模板.然后,您可以创建具有不同分支参数的不同项目,从而实现作业模板 这有点复杂,我会选择上面的"条件管道".

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