在声明性管道语法中执行相同的操作,以下是一些示例:
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的标签,可让您检查标签名称本身。



