如何在声明性管道中使用“when”执行阶段的多条件执行?

时间:2021-03-20 10:33:17

标签: jenkins jenkins-pipeline jenkins-declarative-pipeline

我正在尝试将脚本管道转换为声明式管道。

这是一个 管道:

pipeline {
    agent any
    parameters {
        string(defaultValue: '',
               description: '',
               name : 'BRANCH_NAME')
        choice (
                choices: 'DEBUG\nRELEASE\nTEST',
                description: '',
                name : 'BUILD_TYPE')
    } 
    stages {
        stage('Release build') {
           when {
               expression {params.BRANCH_NAME == "master"}
               expression {params.BUILD_TYPE == 'RELEASE'}
            }
            steps {
                echo "Executing Release\n"
            }
        } //stage
    } //stages
} // pipeline

意图是所有参数值都需要在when下进行比较,然后我才想执行一个阶段。

在脚本化管道中,您可以像下面的代码片段一样使用 && 。

stage('Release build') {
    if ((responses.BRANCH_NAME == 'master') && 
       (responses.BUILD_TYPE == 'RELEASE')) {
         echo "Executing Release\n"
    }
}

如何在声明式管道中从 expression 获得集体回报?

1 个答案:

答案 0 :(得分:1)

它必须像

pipeline {
    agent any
    parameters {
        string(defaultValue: '',
               description: '',
               name : 'BRANCH_NAME')
        choice (
                choices: 'DEBUG\nRELEASE\nTEST',
                description: '',
                name : 'BUILD_TYPE')
    } 
    stages {
        stage('Release build') {
           when {
               allOf {
                    expression {params.BRANCH_NAME == "master"};
                    expression {params.BUILD_TYPE == 'RELEASE'}
               }
            }
            steps {
                echo "Executing Release\n"
            }
        } //stage
    } //stages
} // pipeline

您可以在 when here

中找到其他 dsl 支持