一尘不染

Jenkins管道中的条件步骤/阶段

jenkins

仅在构建特定分支时,如何运行构建步骤/阶段?

例如,仅在调用分支的情况下才运行部署步骤deployment,而其他所有都保持不变。


阅读 294

收藏
2020-07-25

共1个答案

一尘不染

在声明性管道语法中执行相同的操作,以下是一些示例:

stage('master-branch-stuff'){
  agent any
  when{
    branch 'master'
  }
  steps {
    echo 'run this stage - ony if the branch = master branch'
  }
}



stage('feature-branch-stuff') {
    agent label:'test-node'
    when { branch "feature/*" }
    steps {
        echo 'run this stage - only if the branch name started with feature/'
    }
}



stage('expression-branch') {
    agent label:'some-node'
    when {
    expression {
        return env.BRANCH_NAME != 'master';
        }
    }
    steps {
        echo 'run this stage - when branch is not equal to master'
    }
}



stage('env-specific-stuff') {
    agent label:'test-node'
    when { 
      environment name: 'NAME', value: 'this' 
    }
    steps {
        echo 'run this stage - only if the env name and value matches'
    }
}

出现更有效的方法-https: //issues.jenkins-
ci.org/browse/JENKINS-41187
另请 参阅-
https://jenkins.io/doc/book/pipeline/syntax/#when


更新
新的条款
参考:https :
//jenkins.io/blog/2018/04/09/whats-in-
declarative

等于-比较两个值-字符串,变量,数字,布尔值-如果相等,则返回true。老实说,我不确定我们怎么会错过之前添加的内容!您也可以使用not {equals
…}组合进行“不等于”比较。

changeRequest-
以最简单的形式,如果此管道正在构建更改请求(例如GitHub拉取请求),则将返回true。您还可以针对变更请求进行更详细的检查,从而允许您询问“这是针对master分支的变更请求吗?”
以及更多。

buildingTag-一个简单的条件,仅检查Pipeline是否针对SCM中的标记而不是针对分支或特定的提交引用而运行。

标签-更详细的等效于buildingTag的标签,可让您检查标签名称本身。

2020-07-25