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

Bil*_*fri 7 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'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,我收到一个错误

 Multiple occurrences of the when section 
Run Code Online (Sandbox Code Playgroud)

实际上我真正的问题是不同的,但解决这个问题可能会解决我真正的问题。提前致谢

Van*_*ano 11

看来按预期使用指令会更好:

多种的when,如果你寻找一个简单的 if else 逻辑,它就在那里:

  1. 简单明了的if声明:
stage {
    steps {
        script {
            if (foo == 0){
                echo 'foo is 0'
            }
            else if (foo == 1){
                echo 'foo is 1'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您想在 2 中使用嵌套条件,请执行以下操作when

stage {
    when {
      anyOf {
        environment name: 'VAR_1', value: '1'
        branch 'production'
      }
    }
    steps {
         <your steps>
    }
Run Code Online (Sandbox Code Playgroud)

  • 喜欢你在第二点中提到的答案。 (2认同)