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 删除。