詹金斯管道何时有条件

时间:2018-09-24 10:52:28

标签: git jenkins jenkins-pipeline

我正在使用Jenkins Pipeline作为Jenkinsfile

中的源

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

Name: gitlabSourceBranch -> Value continuous_integration

但是,当我在有条件的阶段尝试使用此环境变量时,我只会得到:

Stage "build_sd_card" skipped due to when conditional

我使用的条件是:

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

我使用了詹金斯语法的声明式指令生成器来生成它。

我使用此功能打印了环境(在前面的阶段中称为):

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

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

1 个答案:

答案 0 :(得分:0)

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

您知道环境值已设置(或可以设置),并且可以在env下访问。字首。您应该使用类似以下内容的

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

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

尽管我更喜欢第一个