Класс Jenkinsfile CascadeChoiceParameter возвращает мой массив в виде строки - PullRequest
1 голос
/ 26 октября 2019

Я пытаюсь использовать 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 показывает мне это - единственная опция со всемизначения, разделенные запятой:

Here the image

Есть ли у вас какие-либо идеи, как я могу смонтировать эти параметры в виде реального списка на нем?

1 Ответ

0 голосов
/ 26 октября 2019

Ваш скрипт в части "else" возвращает список, который содержит один элемент типа 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

...