jenkins groovy 逻辑如果条件有效

jenkins groovy logical if conditions validity

我在 jenkins groovy 脚本的“if”条件下添加了这个

if ((sign_check == true)  &&  ((name == "abc") ||  (name == "def"))){
println "hello - yes"
}

甚至尝试使用下面的方法

if (name == "abc" ||  name == "def"){
 if (sign_check == true) {
  println "hello - yes"
 }
}

当脚本被“sign_check=false”和“name=”def触发时,这个if条件应该不会触发“hello - yes”,但在我的例子中,它仍然是碰巧触发“你好 - 是的”。

请告知 if 条件到底有什么问题。

问题可能是 sign_check 变量未分配为布尔值。 以下是一些测试:
测试 1给出正确的结果
不会打印“hello -yes”

script{
       def sign_check = false
       def name ="abc"
                
      if (name == "abc" ||  name == "def"){
      if (sign_check == true) {
          println "hello - yes"
         }
     }
}

测试 1给出正确的结果
不会打印“hello -yes”

script{
       def sign_check = false
       def name ="abc"
                
      if (name == "abc" ||  name == "def"){
      if (sign_check == true) {
          println "hello - yes"
         }
     }
}

如果您使用参数化选项,那么您应该 select 变量 sign_check 作为布尔值而不是字符串:

pipeline {
    agent any
    parameters
    {
    
        booleanParam(defaultValue: true, description: '', name: 'sign_check')
        string(name: 'name', defaultValue: "abc", description: 'What is name?')
    }
    
    stages {
        stage('Hello') {
            steps {
                script{
                    
                    if (params.name == "abc" ||  params.name == "def"){
                     if (params.sign_check == true) {
                      println "hello - param yes"
                     }
                    }
                    
                }
            }
        }
    }
}

以上给出了预期的结果。