Groovy containsKey函数不';我不能正常工作

Groovy containsKey函数不';我不能正常工作,groovy,jenkins-pipeline,Groovy,Jenkins Pipeline,我有以下groovy代码: if (!parameters.containsKey('BUNDLE_NAME')) { echo "mandatory param" error ("mandatory param") } if (!parameters.containsKey('BUNDLE_VERSION')) { echo "mandatory param" error ("mandatory

我有以下groovy代码:

if (!parameters.containsKey('BUNDLE_NAME'))
    {
        echo "mandatory param"
        error ("mandatory param")
    }

    if (!parameters.containsKey('BUNDLE_VERSION'))
    {
        echo "mandatory param"
        error ("mandatory param")
    }
问题是它对两种情况都有效,不管是否为空。

从控制台:

[Pipeline] echo
mandatory param
[Pipeline] error

首先,当管道定义参数时,您可以安全地假设这些键将在那里。它只对其他人在不知不觉中从参数中删除这些参数有帮助,即使这样,管道在按名称访问它们时也会失败

现在,在管道中使用关键字
parameters
定义参数,但使用关键字
params
访问参数,例如:

pipeline {
    agent  any

    parameters {
        string(name: 'BUNDLE_NAME', defaultValue: '', description: '')
        string(name: 'BUNDLE_VERSION', defaultValue: '', description: '')
    }

    stages {
        stage('A') {
            steps {
                script {
                    println "BUNDLE_NAME is ${params.BUNDLE_NAME}"
                    println "BUNDLE_VERSION is " + params.BUNDLE_VERSION
                }
            }
        }
    }
}

这是我的错,但对未来的其他人来说是一个教训: 管道代码:

stage ("valdation"){
    steps{
        script{
            amd_distribution_check_artifacts_exists credential_id: params.DISTRIBUTION_CREDENTIAL_ID, distribution_url: params.DISTRIBUTION_URL, bundle_name: params.BUNDLE_NAME, bundle_version: BUNDLE_VERSION
        }
    }
}
我必须用小写字母来处理变量

   if (!parameters['bundle_name'])
    {
        echo "mandatory param"
        error ("mandatory param")
    }

    if (!parameters['bundle_version'])
    {
        echo "mandatory param"
        error ("mandatory param")
    }

请尝试
echo(params.keys().inspect())
查看参数类型:()值:[]我不喜欢使用默认值。没有比这更简单/更好的方法了吗?听起来像是简单的功能。你说“我不喜欢使用默认值”是什么意思?我的意思是有些groovy函数假设处理空字段。如果(params.BUNDLE_VERSION==“”){…}会有帮助。