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 ...'
}
}
}
}
}
}