使用multibranch管道我想触发一个稍微不同的构建和部署过程,具体取决于哪个git分支触发了构建。
我能想到的两种方法是: 1)在每个分支中使用不同的jenkins文件 2)在jenkins文件中使用一系列{branch'X'}块
第一种方法意味着我在合并分支时需要小心,我知道我会忘记在某些时候。
第二种方法非常混乱,但这意味着我只能使用一个Jenkins文件。
我无法相信没有比这两种方法更好的方法。
答案 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