pipeline中if和when语句控制

本文介绍了在Pipeline中如何使用when和if语句进行条件控制。when语句允许根据给定条件决定是否执行阶段,支持branch、environment、allOf、anyOf和expression等条件。而if语句则需在script块内使用,两者提供了灵活的流程控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值