Jenkinsパイプラインスクリプトの1つに次の入力があります。
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]
コメントを追加