Jenkins管道环境变量否定

Bar*_*oży 0 jenkins jenkins-pipeline

它是脚本化的管道:

stage('check negations') {
    def someVar = false
    println someVar
    println ! someVar

    env.skip = false
    println env.skip
    println ! env.skip
}
Run Code Online (Sandbox Code Playgroud)

我期望它给出

false
true
false
true
Run Code Online (Sandbox Code Playgroud)

但它给出了

false
true
false
false
Run Code Online (Sandbox Code Playgroud)

如何?

它对于非环境变量可以正常工作。当 env.skip 设置为 true 时,它​​甚至可以正常工作。如何?

Ere*_*rez 5

env 变量始终是字符串。因此,当您执行 env.skip = false env.skip 时,将包含字符串“false”,其布尔值为 true。

你可以做:

env.skip = false
println Boolean.parseBoolean(env.skip)
println ! Boolean.parseBoolean(env.skip)
Run Code Online (Sandbox Code Playgroud)

另外,如果这个env.skip是布尔型作业参数,则可以通过 访问它 params.skip。在这种情况下,您将获得其布尔值。