如何在Jenkins Groovy中循环遍历Extended Choice参数执行命令
问题描述
我在Groovy文件中配置了如下Extended Choice参数:
extendedChoice(name: 'Subscription', defaultValue: 'demo_standard', description: 'Check mark on subscription/Part number', multiSelectDelimiter: ',', quoteValue: false, saveJSONParameterToFile: false, type: 'PT_CHECKBOX', value: 'demo_standard,demo_advanced,trial_standard,trial_advanced,standard,advanced', visibleItemCount: 6),
当前通过如下语句调用该参数:
sh "./create.js ${params.Username} ${params.Subscription} "
我希望当选中2-6个Subscription选项时,上述sh命令能针对每个选中的订阅单独执行一次。例如选中"demo_advanced,trial_standard"时,需执行两次命令:
sh "./create.js ${params.Username} demo_advanced" sh "./create.js ${params.Username} trial_standard"
请问如何在Groovy文件中实现该逻辑?
解决方案
你可以通过拆分订阅参数为数组,再循环遍历数组执行命令的方式实现需求,具体代码如下:
// 将选中的订阅字符串按分隔符拆分为数组 def subscriptions = params.Subscription.split(',') // 遍历每个订阅,单独执行sh命令 subscriptions.each { sub -> sh "./create.js ${params.Username} ${sub.trim()}" }
逻辑说明
- 拆分参数:利用Groovy的
split(',')方法,将以逗号分隔的订阅字符串拆分成单个元素的数组,比如选中"demo_advanced,trial_standard"时,会得到['demo_advanced', 'trial_standard']。 - 循环执行:使用
each遍历数组中的每个订阅项,对每一项单独执行sh命令;trim()用来避免可能存在的空格问题(比如参数前后意外出现的空格)。 - 兼容单选项场景:即使只选中1个订阅,这段代码也能正常执行一次命令,无需额外判断选中数量。
内容的提问来源于stack exchange,提问作者Mohan1234
相关产品推荐
相关产品推荐

