仅在构建特定分支时,如何运行构建步骤/阶段?
例如,仅在调用分支的情况下才运行部署步骤deployment,而其他所有都保持不变。
deployment
在声明性管道语法中执行相同的操作,以下是一些示例:
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的标签,可让您检查标签名称本身。
等于-比较两个值-字符串,变量,数字,布尔值-如果相等,则返回true。老实说,我不确定我们怎么会错过之前添加的内容!您也可以使用not {equals …}组合进行“不等于”比较。
changeRequest- 以最简单的形式,如果此管道正在构建更改请求(例如GitHub拉取请求),则将返回true。您还可以针对变更请求进行更详细的检查,从而允许您询问“这是针对master分支的变更请求吗?” 以及更多。
buildingTag-一个简单的条件,仅检查Pipeline是否针对SCM中的标记而不是针对分支或特定的提交引用而运行。
标签-更详细的等效于buildingTag的标签,可让您检查标签名称本身。