从其他jenkins文件访问地图并获取密钥

时间:2018-06-25 18:16:47

标签: jenkins groovy jenkins-pipeline

我有一个constants.groovy像下面这样

import groovy.transform.Field

@Field
def emailDistributionList = ['catalogSuccess':'ccc@ff.com, fff.ddd@gmail.com', 'catalogFailure':'fffee@ofr.com']

return this;

现在我有一个如下的Jenkins管道主脚本

node ('node1') {
    stage("Read Constants") {
        script {
           def constants = evaluate readTrusted('jenkins_pipeline/constants.groovy')
           def catalogDistributionList = "${constants.emailDistributionList}"
           echo "${catalogDistributionList}"
           def successList = "${catalogDistributionList.catalogSuccess}"
           echo "${successList}"
        }
    }
}

现在,首先echo成功地从常量文件中打印Field。但是,当我尝试从中读取密钥并使用第二个echo打印它时,会抛出错误

groovy.lang.MissingPropertyException: No such property: catalogSuccess for class: org.codehaus.groovy.runtime.GStringImpl

我认为它是将Field的{​​{1}}读为constants.groovy,而不是String

1 个答案:

答案 0 :(得分:0)

我知道了。

我们无法将map读入变量,然后再获取key。相反,所有操作都必须一次性完成。

必须通过这种方式完成

def catalogDistributionList = "${constants.emailDistributionList.catalogSuccess}"