东行天下

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

一、when

when 指令允许流水线根据给定的条件决定是否应该执行阶段。
when 指令必须包含至少一个条件。
复制代码

内置条件
branch      当正在构建的分支与模式给定的分支匹配时,执行这个阶段, 例如: when { branch 'master' }。注意,这只适用于多分支流水线。
environment   当指定的环境变量是给定的值时,执行这个步骤, 例如: when { environment name: 'DEPLOY_TO', value: 'production' }
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' } }
anyOf       当至少有一个嵌套条件为真时,执行这个阶段,必须包含至少一个条件,例如: 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'
            }
        }
    }
}
posted on   东行天下  阅读(228)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
 
点击右上角即可分享
微信分享提示