我正在使用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
条件不起作用?
答案 0 :(得分:0)
您需要将值与输入值进行比较。
您知道环境值已设置(或可以设置),并且可以在env下访问。字首。您应该使用类似以下内容的
: when {
equals expected: 'continuous_integration', actual: env.gitlabSourceBranch
}
或
when {
expression {
env.gitlabSourceBranch == 'continuous_integration'
}
}
尽管我更喜欢第一个