我正在尝试使用CascadeChoiceParameter通过命令创建我的选项列表来动态挂载参数表单:
choiceType: 'PT_SINGLE_SELECT',
description: 'Informations about the application on kubernetes',
name: 'deployments',
omitValueField: false,
randomName: 'choice-parameter-5633384460832175',
referencedParameters: 'namespaces',
script: [
$class: 'GroovyScript',
script: [
classpath: [],
sandbox: true,
script: """
if (namespaces.equals("Select")){
return["Nothing to do - Select your deployment"]
} else {
def kubecmd = "kubectl get deploy --kubeconfig=${kubefileHlg} -o jsonpath={.items[*].metadata.name} -n " + namespaces
return [kubecmd.execute().in.text.split()]
}
"""
]
Jenkins上的form参数向我展示了这一点-单个选项,所有值以逗号分隔:
您是否知道如何将这些选项作为真实列表安装在其中?
答案 0 :(得分:0)
您在“其他”部分中的脚本返回一个列表,其中包含一个String[]
类型的单个元素(字符串数组)。您需要返回的是List<String>
。替换
return [kubecmd.execute().in.text.split()]
使用
return kubecmd.execute().in.text.split().toList()
您将看到预期的结果。
简单示例:
node {
properties([
parameters([
[
$class: 'CascadeChoiceParameter',
choiceType: 'PT_SINGLE_SELECT',
name: 'someChoice',
script: [
$class: 'GroovyScript',
script: [
sandbox: true,
classpath: [],
script: '''
return "Lorem ipsum dolor sit amet".split().toList()
'''
]
]
]
])
])
stage("Test") {
echo env.someChoice
}
}
输出: