Jenkinsfile类CascadeChoiceParameter以字符串形式返回我的数组

时间:2019-10-25 21:19:21

标签: jenkins groovy jenkins-pipeline

我正在尝试使用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参数向我展示了这一点-单个选项,所有值以逗号分隔:

Here the image

您是否知道如何将这些选项作为真实列表安装在其中?

1 个答案:

答案 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
    }
}

输出:

enter image description here