我有一个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
?
答案 0 :(得分:0)
我知道了。
我们无法将map
读入变量,然后再获取key
。相反,所有操作都必须一次性完成。
必须通过这种方式完成
def catalogDistributionList = "${constants.emailDistributionList.catalogSuccess}"