Как отправить ссылочный параметр в readFileFromWorkspace через activeChoiceReactiveParam

Я пытаюсь отправить ссылочный параметр («продукт») сценарию Groovy (services.groovy), который запускается командой readFileFromWorkspace, обернутой с помощью activeChoiceReactiveParam.

Ожидаемый результат: Получите выпадающий список с содержимым файлов.
Фактический результат: задание завершается ошибкой при обработке сценария DSL.

ERROR: (services.groovy, line 5) No such property: product for class: dsl.jobs.argocd.services

Я попытался определить параметр, на который ссылаются продукты, как переменную среды (и обновил в сценарии services.groovy), это не сработало. Я попытался воссоздать файл services.groovy в каталоге /tmp/, но у меня возникли проблемы с поиском файлов.

продукты.groovy:

package dsl.jobs.argocd

return ['a','b','c']

services.groovy:

package dsl.jobs.argocd

return_value = []

if (product.equals("a")){
    return_value = ['e']
}
if (product.equals("b")){
    return_value = ['f']
}
if (product.equals("c")){
    return_value = ['g']
}
return return_value;

Трубопровод:

pipelineJob("test") {
    description("test")
    keepDependencies(false)
    parameters {
        activeChoiceParam('product') {
            description('What product would you like to update?')
            filterable()
            choiceType('SINGLE_SELECT')
            groovyScript {
                script(readFileFromWorkspace('dsl/jobs/argocd/products.groovy'))
                fallbackScript('return ["ERROR"]')
            }
        }
        activeChoiceReactiveParam('service') {
            description('Which services would you like to update?')
            filterable()
            choiceType('CHECKBOX')
            groovyScript {
                script(readFileFromWorkspace('dsl/jobs/argocd/services.groovy'))
                fallbackScript('return ["ERROR"]')
            }
            referencedParameter("product")
        }
    }
}

Я подхожу к этому неправильно? Есть ли другой способ использовать один и тот же параметр в нескольких файлах Groovy?

"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
0
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что ж, кажется, приведенный выше код идеален, единственная проблема заключалась в расположении скрипта services.groovy.

Я взял файл из каталога DSL (поскольку я не хочу, чтобы он анализировался как файл DSL), сослался на него в правильном месте, и он отлично работает.

Обновленный конвейер:

pipelineJob("test") {
    description("test")
    keepDependencies(false)
    parameters {
        activeChoiceParam('product') {
            description('What product would you like to update?')
            filterable()
            choiceType('SINGLE_SELECT')
            groovyScript {
                script(readFileFromWorkspace('dsl/jobs/argocd/products.groovy'))
                fallbackScript('return ["ERROR"]')
            }
        }
        activeChoiceReactiveParam('service') {
            description('Which services would you like to update?')
            filterable()
            choiceType('CHECKBOX')
            groovyScript {
                script(readFileFromWorkspace('services.groovy'))
                fallbackScript('return ["ERROR"]')
            }
            referencedParameter("product")
        }
    }
}

Другие вопросы по теме