Groovy containsKey函数无法正常工作

时间:2019-11-28 09:37:23

标签: groovy jenkins-pipeline

我具有以下常规代码:

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

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

问题在于它适用于两种情况,无论是否为空。 Pipeline parameters

从控制台:

[Pipeline] echo
mandatory param
[Pipeline] error

2 个答案:

答案 0 :(得分:0)

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

现在,使用关键字parameters在管道中定义,但是使用关键字params访问 ,例如:< / p>

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
                }
            }
        }
    }
}

答案 1 :(得分:0)

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

def f(l, sub):
    return next(x for x in l if sub in x)

我必须以小写字母表示变量

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
        }
    }
}