Шаблон письма Jenkins (groovy) с пользовательской переменной всегда печатается в письме

Мы используем плагин email-ext в комбинации с Jenkins-pipeline для отправки писем (шаблон на основе Groovy). Дженкинс выполняет несколько заданий (все эти задания отправляют сообщения электронной почты при сбое), а для некоторых заданий необходима дополнительная информация в письме. Для нескольких заданий эта информация не нужна, и поэтому эта строка пользовательских переменных не должна присутствовать. В работах, где эта строка не нужна, мы не определили эту пользовательскую переменную.

С оператором if в шаблоне электронной почты Groovy мы обнаруживаем, что эта пользовательская переменная всегда присутствует в электронной почте.

<%
def envOverrides = it.getAction('org.jenkinsci.plugins.workflow.cps.EnvActionImpl').getOverriddenEnvironment()
if (${envOverrides["custom1"]} != null) { %>
<tr>
    <td><b>Custom variable:</b></td>
    <td>${envOverrides["custom1"]}</td>
</tr>
<% } %>

В jenkinsfile этот пользовательский var определен для некоторых подобных (и не присутствует в заданиях, где это не нужно):

env.custom1 = "dummy_value"

В нашем случае эта строка печатается каждый раз, независимо от того, имеет ли значение пользовательская переменная или нет. Так что, если пользовательская переменная установлена, это выглядит так:

Custom variable: dummy_value

И если пользовательская переменная не установлена, она печатает:

Custom variable: null

Ожидается, что эта строка не присутствует в электронном письме. Что мы делаем не так? Какие-либо предложения?

1 ответ

Как только я узнал, что envOverrides возвращает карту, решение было принято быстро:

<%
def envOverrides = it.getAction('org.jenkinsci.plugins.workflow.cps.EnvActionImpl').getOverriddenEnvironment()
if (envOverrides.containsKey('custom1') && "${envOverrides['custom1']} != '') { %>
<tr>
    <td><b>Custom variable:</b></td>
    <td>${envOverrides['custom1']}</td>
</tr>
<% } %>

С этой настройкой полная строка не печатается в электронном письме, если она не определена в файле jenkinsfile или когда значение пусто.

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