Pel*_*cho 5 jenkins jenkins-pipeline
非常简单直接的问题:
假设我们有这个管道(我认为没有更简单的例子):
node {
env.someEnvVariable = false
boolean asBoolean = env.someEnvVariable ?: false
def asDef = env.someEnvVariable ?: false
echo "asBoolean: $asBoolean" // prints true because of Jenkins
echo "asDef: $asDef" // prints false
}
Run Code Online (Sandbox Code Playgroud)
为什么????
将变量定义为boolean使 Jenkins 为其分配一个真值,但将其定义为def将其分配为真正的假值
詹金斯的true价值从何而来?
编辑:另一个例子:
node {
env.someEnvVariable = false
boolean someBoolean = false
def someVar = false
echo "envVar: ${env.someEnvVariable}" // prints false
echo "someBoolean: ${someBoolean}" // prints false
echo "someVar: ${someVar}" // prints false
if (env.someEnvVariable != null) {
someBoolean = env.someEnvVariable
someVar = env.someEnvVariable
}
echo "envVar: ${env.someEnvVariable}" // prints false
echo "someBoolean: ${someBoolean}" // prints true because of hack
echo "someVar: ${someVar}" // prints false
}
Run Code Online (Sandbox Code Playgroud)
我的假设是,当您分配环境变量时,它会被解释为 string 'false'。这意味着在这两种情况下,您都尝试分配一个字符串,但boolean如果它不为空,则将字符串分配给变量将被解释为 true。
三元运算符的工作方式相同,您检查环境变量是否为 true(不为空)。事实并非如此,它返回变量本身。
| 归档时间: |
|
| 查看次数: |
11565 次 |
| 最近记录: |