如何在Jenkins管道中引用Maps变量的映射

如何在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“解

我有下面的Jenkins管道,我试图呼出
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']}"
                        }
                    }
                }
            }
        }
    }
}