Jenkins文件中单个阶段内的多个when子句

时间:2020-10-08 15:01:10

标签: jenkins

我想在一个阶段中放置多个when子句。这是基本示例

def foo = 0
pipeline {
    agent any

    stages {
        stage('Hello') {
        when {
            expression {foo == 0}
        } 
            steps {
                echo 'foo is 0'
            }
        when {
            expression {foo == 1}
        } 
            steps {
                echo 'foo is 1'
            }
        }
    }
}

当我尝试此操作时,我收到一个错误

 Multiple occurrences of the when section 

实际上,我的实际问题有所不同,但是解决此问题可能会解决我的实际问题。预先感谢

1 个答案:

答案 0 :(得分:1)

使用伪指令intended看起来会更好:

设计不允许使用多个when,如果您有一个简单的if逻辑,那么它就会存在:

  1. Straghtforward if语句:
stage {
    steps {
        script {
            if (foo == 0){
                echo 'foo is 0'
            }
            else if (foo == 1){
                echo 'foo is 1'
            }
        }
    }
}

如果您想在when中使用嵌套条件:
2.在这里:

stage {
    when {
      anyOf {
        environment name: 'VAR_1', value: '1'
        branch 'production'
      }
    }
    steps {
         <your steps>
    }