Я пытаюсь отправить ссылочный параметр («продукт») сценарию 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?

Что ж, кажется, приведенный выше код идеален, единственная проблема заключалась в расположении скрипта 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")
}
}
}