pipeline when指令


一.简介

when指令允许pipeline根据给定的条件,决定是否执行阶段内的步骤。when指令必须至少包含一个条件。when指令除了支持branch判断条件,还支持多种判断条件。

如下使用

        stage('Example Deploy') {
            when {
                branch 'production'
            }
            steps {
                echo 'Deploying'
            }
        }

二.选项

单独判断

changelog :如果版本控制库的changelog符合正则表达式,则执行

when {
    changelog '.*^\\[DEPENDENCY\\] .+$'
}

changeset :如果版本控制库的变更集合中包含一个或多个文件符合给定的Ant风格路径表达式,则执行

when {
    changeset "**/*.js"
}

environment :如果环境变量的值与给定的值相同,则执行

when {
    environment name: 'DEPLOY_TO', value: 'production'
}

equals :如果期望值与给定的值相同,则执行

when {
    equals expected: 2, actual: currentBuild.number
}

expression :如果Groovy表达式返回的是true,则执行。当表达式返回的是字符串时,它必须转换成布尔类型或null ;否则,所有的字符串都被当作true处理。

when {
    expression {
        return env.BRANCH_NAME != 'master';
    }
}

buildingTag :如果pipeline所执行的代码被打了tag,则执行

when {
    buildingTag()
}

tag:如果pipeline所执行的代码被打了tag,且tag名称符合规则,则执行。如果tag的参数为空,即tag ( ),则表示不论tag名称是什么都执行,与buildingTag的效果相同。

when {
    tag "release-*"
}

tag条件支持comparator参数,支持的值如下。
EQUALS:简单的文本比较

when {
    tag pattern "release-3.1", comparator: "EQUALS"
}

GLOB(默认值) :Ant风格路径表达式。由于是默认值,所以使用时一般省略。

when {
    tag pattern "release-*", comparator: "GLOB"
}

REGEXP∶正则表达式

when {
    tag pattern "release-\\d+", comparator: "REGEXP"
}

条件组合

以上介绍的都是单条件判断,when指令还可以进行多条件组合判断。

allOf :所有条件都必须符合。下例表示当分支为master且环境变量DEPLOY_TO的值为production时,才符合条件。注意,多条件之间使用分号分隔。

when {
    anyof {
        branch 'master';
        environment name: 'DEPLOY_TO', value: 'production'
    }
}

anyOf:其中一个条件为true,就符合。下例表示master分支或staging分支都符合条件。

when {
    anyof {
        branch 'master';
        branch 'staging'
    }
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM