Дженкинс: Как использовать поле «привязки» плагина расширенного выбора параметров?

#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")