2015-05-28 2 views
4

Я разрабатываю новый плагин Jenkins, который будет выполнен во время фазы сборки задания Jenkins и должен дать пользователю возможность указать имя переменной (в отличие от буквального значения) в задание для плагина. Предполагается, что при выполнении задания имя переменной, указанное пользователем, будет заменено действительным значением, связанным с переменной, и что плагин затем будет использовать это реальное значение при запуске метода выполнения.Переменная замена в плагине Jenkins

Например, если переменная MY_VARIABLE со значением myValue впрыскивает в среду сборки другой частью задания и значением ${MY_VARIABLE} была указана в конфигурации задания для моего плагина, то я хотел бы плагин заменить ${MY_VARIABLE} с действительное значение для переменной, которая равна myValue.

enter image description here

Сделав некоторые исследования, я понимаю, что Дженкинс не может автоматически заменить переменную в конфигурации задания для соответствующих значений, и это должно быть обработано с помощью плагина. То, что я не смог выработать, - лучший способ выполнить замену в моем плагине. Единственное решение, которое я нашел до сих пор, - это синтаксический анализ строки, переданной из конфигурации задания, чтобы определить, соответствует ли она правильному шаблону для переменной, а затем просматривает значение в моем коде.

Мой вопрос заключается в том, предоставляет ли Jenkins API лучшее решение, которое позволило бы моему плагину заменить переменную реальным значением?

ответ

4

Вы можете восстановить среду сборки - объект EnvVars - который имеет удобный способ expand(String).

Это распознает $VARIABLE и ${VARIABLE} -строчные строки и заменяет соответствующее значение из окружающей среды.

Например:

@Override 
public boolean perform(AbstractBuild build, Launcher launcher, 
    BuildListener listener) throws IOException, InterruptedException { 
    ... 
    final EnvVars env = build.getEnvironment(listener); 
    String expandedDbUrl = env.expand(dbUrl); 
    ... 
} 
+0

Спасибо - Это было именно то, что я искал –

Смежные вопросы