首页 > 解决方案 > 詹金斯管道条件

问题描述

我正在使用 Jenkins Pipeline 作为源Jenkinsfile

我没有使用多分支管道,因此在分支选择条件下我不能使用标准。我的 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条件不起作用?

标签: gitjenkinsjenkins-pipeline

解决方案


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

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

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

或者

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

虽然我更喜欢第一个


推荐阅读