一、when
when
指令允许流水线根据给定的条件决定是否应该执行阶段。when
指令必须包含至少一个条件。
内置条件
branch 当正在构建的分支与模式给定的分支匹配时,执行这个阶段, 例如: when { branch 'master' }
。注意,这只适用于多分支流水线。
environment 当指定的环境变量是给定的值时,执行这个步骤, 例如: when { environment name: 'DEPLOY_TO', value: 'production' }
anyOf 当至少有一个嵌套条件为真时,执行这个阶段,必须包含至少一个条件,例如:
expression 当指定的Groovy表达式评估为true时,执行这个阶段, 例如: when { expression { return params.DEBUG_BUILD } }
not 当嵌套条件是错误时,执行这个阶段,必须包含一个条件,例如: when { not { branch 'master' } }
allOf 当所有的嵌套条件都正确时,执行这个阶段,必须包含至少一个条件,例如: when { allOf { branch 'master'; environment name: 'DEPLOY_TO', value: 'production' } }
when { anyOf { branch 'master'; branch 'staging' } }
1 pipeline { 2 agent any 3 stages { 4 stage('Example Build') { 5 steps { 6 echo 'Hello World' 7 } 8 } 9 stage('Example Deploy') { 10 when { 11 branch 'production' 12 anyOf { 13 environment name: 'DEPLOY_TO', value: 'production' 14 environment name: 'DEPLOY_TO', value: 'staging' 15 } 16 } 17 steps { 18 echo 'Deploying' 19 } 20 } 21 } 22 } 23 24 25 pipeline { 26 agent any 27 stages { 28 stage('Example Build') { 29 steps { 30 echo 'Hello World' 31 } 32 } 33 stage('Example Deploy') { 34 when { 35 allOf { 36 branch 'production' 37 environment name: 'DEPLOY_TO', value: 'production' 38 } 39 } 40 steps { 41 echo 'Deploying' 42 } 43 } 44 } 45 }
在进入 stage
的 agent
前评估 when
默认情况下, 如果定义了某个阶段的代理,在进入该`stage` 的
agent
后该 stage
的 when
条件将会被评估。但是, 可以通过在 when
块中指定 beforeAgent
选项来更改此选项。 如果 beforeAgent
被设置为 true
, 那么就会首先对 when
条件进行评估 , 并且只有在 when
条件验证为真时才会进入 agent
1 pipeline { 2 agent none 3 stages { 4 stage('Example Build') { 5 steps { 6 echo 'Hello World' 7 } 8 } 9 stage('Example Deploy') { 10 agent { 11 label "some-label" 12 } 13 when { 14 beforeAgent true 15 branch 'production' 16 } 17 steps { 18 echo 'Deploying' 19 } 20 } 21 } 22 }
pipeline {
agent any
stages {
stage('Example Build') {
steps {
echo 'Hello World'
}
}
stage('Example Deploy') {
when {
branch 'production'
anyOf {
environment name: 'DEPLOY_TO', value: 'production'
environment name: 'DEPLOY_TO', value: 'staging'
}
}
steps {
echo 'Deploying'
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示