如何在Jenkins管道中引用Maps变量的映射
我有下面的Jenkins管道,我试图呼出如何在Jenkins管道中引用Maps变量的映射,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我有下面的Jenkins管道,我试图呼出solutionname和TargetVersion值。我尝试了不同的方法,它要么给了我错误,要么不是我想要的结果 如果我使用echo“解决方案名称:$Solution['SolutionName']”,它给出了解决方案名称:SolutionA={SolutionName=SolutionA,TargetVersion=1.0.0.0}['SolutionName']的结果,这是在末尾带有['SolutionName']的映射本身 如果我使用echo“解
solutionname
和TargetVersion
值。我尝试了不同的方法,它要么给了我错误,要么不是我想要的结果
- 如果我使用
,它给出了echo“解决方案名称:$Solution['SolutionName']”
的结果,这是在末尾带有解决方案名称:SolutionA={SolutionName=SolutionA,TargetVersion=1.0.0.0}['SolutionName']
的映射本身['SolutionName']
- 如果我使用
,它会抛出一个错误echo“解决方案名称:${Solution.SolutionName}”
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:找不到这样的字段:字段java.util.AbstractMap$SimpleMultiableEntry SolutionName
我想出来了,显然我需要打电话:
echo“解决方案名称:$Solution.value.SolutionName”
因此,调用$Solution
似乎并不认为它想要它的值,所以我需要调用$Solution.value
来获取值,然后从那里调用.SolutionName
来获取子值
def NodeLabel = 'windows'
// Solution
def SolutionMap = [
SolutionA: [
SolutionName: 'SolutionA',
TargetVersion: '1.0.0.0'
],
SolutionB: [
SolutionName: 'SolutionB',
TargetVersion: '2.1.0.0'
]
]
pipeline {
agent { node { label "${NodeLabel}" } }
stages {
stage('Test') {
steps {
script {
SolutionMap.each { solution ->
stage(solution.key) {
echo "Solution Name: ${solution['SolutionName']}"
echo "Solution Name: ${solution['TargetVersion']}"
}
}
}
}
}
}
}