#jenkins #jenkins-pipeline #groovyshell #extended-choice-parameter
#Дженкинс #дженкинс-конвейер #groovyshell #расширенный выбор параметра
Вопрос:
Я не понимаю, как использовать поле «привязки» параметра extendedChoice, я проверил исходный код плагина и увидел, что он добавляет переменные в контекст в GroovyShell, но я не понимаю, как получить доступ к этому контексту.
Я пытаюсь установить привязку следующим образом:
def bindings = new Binding()
bindings.setProperty("foo", "foo value")
return extendedChoice(
name: 'jsonParameters',
bindings: bindings.getVariables().toString(),
type: 'PT_JSON',
javascript: jsScript,
groovyScript: groovyScript)
Затем внутри «groovyScript» я ожидаю, что смогу получить доступ к моей переменной «foo»…
ОБНОВЛЕНИЕ: я создал простой тест, «привязка» является глобальной, и у меня есть к ней доступ! Почему не в моем groovyscript с плагином?
def bindings = new Binding()
bindings.setVariable("foo", "bar")
GroovyShell groovyShell = new GroovyShell();
Script compiledScript = groovyShell.parse("""
println "foo: " binding.variables.get("foo")
""");
compiledScript.setBinding(bindings);
compiledScript.run();
// print "foo: bar"
Версия плагина: 0.78
Ответ №1:
Формат поля привязки — это не Map.toString()
формат, а «ключ = значение», где записи разделяются символом » n»:
return extendedChoice(
name: 'jsonParameters',
bindings: "key1=value2nkey2=value2",
type: 'PT_JSON',
javascript: jsScript,
groovyScript: groovyScript)
Затем, чтобы использовать эти переменные, просто вызовите getProperty
groovyScript:
getProperty("key1")