我的一个詹金斯管道脚本中有以下输入:
def IMAGE_TAG = input message: 'Please select a Version', ok: 'Next',
parameters: [choice(name: 'IMAGE_TAG', choices: imageTags, description: 'Available Versions')]
imageTags
是地图列表,例如:
imageTags : [
[targetSuffix: "", sourceSuffix: "v2.17.1"],
]
运行脚本时,只能[targetSuffix: "", sourceSuffix: "v2.17.1"]
按预期从下拉选项中进行选择。
在我的脚本中,我还可以看到被选择的值:
echo "Selected Version = ${env.SELECTED_IMAGE_TAG}"
[Pipeline] echo Selected Version = {targetSuffix=, sourceSuffix=v2.17.1}
现在,我想找出从原始imageTags列表中选择了哪个项目,但是我的脚本无法正常工作:
def selectedImageTag = imageTags.find { it.targetSuffix == "${env.SELECTED_IMAGE_TAG.targetSuffix}" }
我最终遇到以下异常:
groovy.lang.MissingPropertyException: No such property: targetSuffix for class: java.lang.String
我的问题是:如何从原始地图列表中获得所选项目?
该input
步骤返回一个字符串,因此您无法编写env.SELECTED_IMAGE_TAG.targetSuffix
。您必须提取子字符串,例如使用正则表达式:
def match = ( env.SELECTED_IMAGE_TAG =~ /\{targetSuffix=(.*?), sourceSuffix=(.*?)\}/ )
if( match ) {
def selectedTargetSuffix = match[0][1]
def selectedImageTag = imageTags.find { it.targetSuffix == selectedTargetSuffix }
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句