Как сценарий предварительной отправки может получить параметры параметризованного задания 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

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

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

4 ответа

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

пример

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

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

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

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

if ((official != null) && official.equals("true")) {
  cancel = false;
} else {
  cancel = true;
}

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

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

Другие вопросы по тегам