when指令允许pipeline根据给定的条件,决定是否执行阶段内的步骤。when指令必须至少包含一个条件。when指令除了支持branch判断条件,还支持多种判断条件。
如下使用
stage('Example Deploy') {
when { branch 'production'} steps { echo 'Deploying'}}changelog :如果版本控制库的changelog符合正则表达式,则执行
when { changelog '.*^\\[DEPENDENCY\\] .+$'}changeset :如果版本控制库的变更集合中包含一个或多个文件符合给定的Ant风格路径表达式,则执行
when { changeset "**/*.js"}environment :如果环境变量的值与给定的值相同,则执行
when { environment name: 'DEPLOY_TO', value: 'production'}equals :如果期望值与给定的值相同,则执行
when { equals expected: 2, actual: currentBuild.number}expression :如果Groovy表达式返回的是true,则执行。当表达式返回的是字符串时,它必须转换成布尔类型或null ;否则,所有的字符串都被当作true处理。
when { expression {return env.BRANCH_NAME != 'master';}}buildingTag :如果pipeline所执行的代码被打了tag,则执行
when { buildingTag()}tag:如果pipeline所执行的代码被打了tag,且tag名称符合规则,则执行。如果tag的参数为空,即tag ( ),则表示不论tag名称是什么都执行,与buildingTag的效果相同。
when { tag "release-*"}tag条件支持comparator参数,支持的值如下。
EQUALS:简单的文本比较
when { tag pattern "release-3.1", comparator: "EQUALS"}GLOB(默认值) :Ant风格路径表达式。由于是默认值,所以使用时一般省略。
when { tag pattern "release-*", comparator: "GLOB"}REGEXP∶正则表达式
when { tag pattern "release-\\d+", comparator: "REGEXP"}以上介绍的都是单条件判断,when指令还可以进行多条件组合判断。
allOf :所有条件都必须符合。下例表示当分支为master且环境变量DEPLOY_TO的值为production时,才符合条件。注意,多条件之间使用分号分隔。
when { anyof { branch 'master'; environment name: 'DEPLOY_TO', value: 'production'}}anyOf:其中一个条件为true,就符合。下例表示master分支或staging分支都符合条件。
when { anyof { branch 'master'; branch 'staging'}」原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。