让 OR 在 Jenkins 管道上正常工作

Getting OR to work properly on Jenkins Pipeline

我试图禁止在管道上使用某些名称。 简单地说:“如果它是 name1 或 NAME1,则忽略 - 否则,继续” 但显然它不能正常工作。 (根据示例,仍然打印 hello) 如果我输入 "params.project != 'name1' || params.project != 'name1' " 它确实有效,我真的不明白为什么。

我在这里错过了什么?

pipeline {

    agent { label 'master'}
    parameters {
        string(defaultValue: '', description: '', name: 'project')
    }
    stages {
        stage ('project stage') {
            steps {
                script {
                    if (params.project != 'name1' || params.project != 'NAME1')
                        println "Hello"
                    }
                }
            }
        }
    }

它不是 的副本,因为我试图理解此行为背后的逻辑。

最后我选择了

if (params.project!= 'name') {
  if (params.project!= 'NAME1') { 
  }   
}

但我相信有比这更好的方法..

更新:
我找到了另一种方法,即使用 contains
if (project.contains('name'))

如果您的 objective 不允许将两个值都用于 project 参数,那么您需要 && 逻辑运算符(“和”):

if (params.project != 'name1' && params.project != 'NAME1')

这将根据需要阻止参数的两个值。

或者,您也可以使用类似于以下的正则表达式:

if !(params.project ==~ /name1|NAME1/) // =~ if instead do not want to additionally require type match