【问题标题】:Jenkins Pipeline when condition詹金斯管道条件
【发布时间】:2019-02-27 20:54:11
【问题描述】:

我在 Jenkinsfile 中使用 Jenkins Pipeline 作为源代码

我没有使用多分支管道,因此我无法使用标准 when 条件进行分支选择。我的 git 存储库的主机是 gitlab,但我正在使用 gitlab 插件,所以我可以看到这个环境变量已设置:

Name: gitlabSourceBranch -> Value continuous_integration

但是,当我尝试在某个阶段使用此环境变量时,我会得到:

Stage "build_sd_card" skipped due to when conditional

我使用的when条件是:

        when {
          environment name: 'gitlabSourceBranch ', value: 'continuous_integration'
        }

我使用了 jenkins 语法声明指令生成器来生成它。

我用这个函数打印出环境(在前面的阶段调用):

@NonCPS
def printParams() {
  env.getEnvironment().each { name, value -> println "Name: $name -> Value $value" }
}

为什么这个when 条件不起作用?

【问题讨论】:

    标签: git jenkins jenkins-pipeline


    【解决方案1】:

    您需要将值与输入值进行比较。

    如您所知,环境值已设置(或可以设置)并且可以在 env 下访问。字首。你应该使用类似的东西:

      when {
        equals expected: 'continuous_integration', actual: env.gitlabSourceBranch
      }
    

    when {
         expression {
             env.gitlabSourceBranch == 'continuous_integration'
         } 
    }
    

    虽然我更喜欢第一个

    【讨论】: