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