pipeline中if和when语句控制
when 语句控制
该指令允许Pipeline根据给定的条件确定是否执行该阶段。when指令必须至少包含一个条件。如果when指令包含多个条件,则所有子条件必须为stage执行返回true。定义在stage内,steps之前使用,只有when判断结果时true时继续执行stage中when后面的step
branch : 当正在构建的分支与给出的分支模式匹配时执行阶段,例如:
pipeline { agent any //设置环境变量 environment { EVN_FLAG = NO } stages { stage(测试){ when { branch master } steps { echo 测试 stage ... } } } }
environment :当指定的环境变量设置为给定值时执行阶段,例如:
pipeline { agent any //设置环境变量 environment { EVN_FLAG = NO } stages { stage(测试){ when { //当EVN_FLAG环境变量值为YES时 environment name: EVN_FLAG, value: YES } steps { echo 测试 stage ... } } } }
allOf:当所有嵌套条件都为真时,执行stage,必须至少包含一个条件
pipeline { agent any stages { stage(部署) { when { // 当满足allOf中所有条件 allOf { branch master; environment name: DEPLOY_TO, value: production } } steps { sh echo 部署 stage ... } } } }
anyOf:当至少一个嵌套条件为真时执行舞台,必须至少包含一个条件
pipeline { agent any stages { stage(部署) { when { // 当anyOf中的任意一个条件满足 anyOf { branch master; branch staging } } steps { sh echo 部署 stage ... } } } }
表达式 expression ,当表达式为true时继续执行
pipeline { agent any stages { stage(初始化) { steps { script { //定义变量 RUN_FLAG = true } } } stage(构建) { when { //判断表达式是否为true,如果为true则执行 expression { RUN_FLAG } } steps { sh echo 构建 stage ... } } } }
字符串判断
pipeline { agent any stages { stage(初始化) { steps { script { //定义变量 PASSWORD = ada } } } stage(部署) { when { //当密码匹配的时候执行, 顺序不能反 equals expected: ada, actual: PASSWORD } steps { sh echo 部署 stage ... } } } }
if 语句控制
if 和when都是用来做判断的,但是if所在的位置和when不同,if需要在stage中定义scrip后,在script中使用
pipeline { agent any environment { OFF_FLAG = YES } stages { stage(Init) { steps { script { BUILD_FLAG = true } } } stage(Build) { steps { script { if ( BUILD_FLAG ) { sh echo Build stage ... } } } } stage(Test){ steps { script { if ( OFF_FLAG == YES ) { sh echo Test stage ... } } } } } }
上一篇:
5款热门的远程控制软件,让你事半功倍
下一篇:
自动化测试中的pom模型浅谈