如何在 Jenkins 管道中引用 map of maps 变量



我有下面的 Jenkins 管道,我正在尝试回显SolutonNameTargetVersion值。我尝试了不同的方法,它要么给了我错误,要么没有我想要的结果。

  • 如果我使用echo "Solution Name: $solution['SolutionName']",它给出了Solution Name: SolutionA={SolutionName=SolutionA, TargetVersion=1.0.0.0}['SolutionName']的结果,即地图本身,末尾有['SolutionName']
  • 如果我使用echo "Solution Name: ${solution.SolutionName}",它会抛出错误org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: No such field found: field java.util.AbstractMap$SimpleImmutableEntry 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']}"
}
}
}
}
}
}
}

我想通了,显然我需要打电话:

echo "Solution Name: $Solution.value.SolutionName"

因此,调用$Solution似乎并不假设它想要其value因此我需要调用$Solution.value以获取值,然后从那里调用.SolutionName以获取子值。