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

How to do Multiple conditional execution of stage using 'when' in 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 获取集体 return?

必须像

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

您可以在里面找到其他 dsl 支持 when here