Как сценарий предварительной отправки может получить параметры параметризованного задания Jenkins?

Я хотел бы отменить отправку электронной почты на основе значения логического параметра параметризованного задания. Параметр называется «skip.email».

Я попытался написать сценарий предварительной отправки со следующим содержимым, но он не работает:

def env = System.getenv()
logger.println("Should I skip email ? " + env['skip.email'])
cancel = env['skip.email']

Вот что я вижу в логах:

Should I skip email ? null

Я попытался распечатать все переменные среды, но в списке нет ни одного из параметров моего параметризованного задания Jenkins.

Пожалуйста, помогите мне, заранее спасибо!


person Kraal    schedule 13.11.2014    source источник
comment
Кажется, никто не ответил :-/   -  person Kraal    schedule 17.11.2014


Ответы (4)


Сценарий предварительной отправки предоставляет переменную с именем "build", тип которой наследуется от AbstractBuild. Используйте метод getBuildVariables, чтобы получить карту, содержащую параметризованные переменные.

Пример

У меня есть параметризованная переменная с именем «цель», которая описывает среду развертывания. Я хочу, чтобы электронные письма отправлялись в QA только в том случае, если целевой средой была среда QA.

if (!build.getBuildVariables().get("target").equals("qa")) {   
  // cancel variable cancels the email send when set to true
  cancel = true
}
person tday03    schedule 22.07.2015

Ответ tday03 кажется правильным, но у меня не работает, я ввожу переменные с помощью Environment Injector Plugin, я не знаю, проблема ли в нем. Во всяком случае, я закончил с этим сценарием:

def env = build.getEnvironment()
String official = env['OFFICIAL'];

if ((official != null) && official.equals("true")) {
  cancel = false;
} else {
  cancel = true;
}
person Luca Faggianelli    schedule 23.06.2016

Параметры параметризованного задания не являются переменными среды!! К ним нельзя получить доступ таким образом. Если вы хотите получить к ним доступ, используйте Environment Inject Plugin чтобы добавить их в среду в качестве шага сборки, а затем выполните следующие действия. Это должно решить вашу проблему.

person Kumar Mani    schedule 08.07.2015

build.getEnvironment(TaskListener.NULL) при добавлении переменных среды в качестве предыдущего шага. Если вы просто хотите получить параметры сборки, build.buildvariables должно работать нормально.

person solstice333    schedule 01.05.2017