将 jenkins 环境变量合并到电子邮件通知的时髦模板中



我在 Jenkins 上为一个项目定义了几个环境变量,其中我想将一些变量合并到构建成功之前和之后发送的电子邮件通知中。

groovy.text.Template似乎不接受这些环境变量。

我还使用了"将环境变量注入构建过程

帮助功能:将环境变量注入构建过程",并将我的变量定义如下

BUILD_NAME=${BUILD_NAME}

其中BUILD_NAME在我执行构建时被接受为参数。

请有人帮我解决这个问题。

如果您使用 email-ext Jenkins 插件发送电子邮件,则有一个"build"对象包含有关 Jenkins 作业的大量信息。

我会做以下几点:

  1. 通过将以下代码添加到模板来打印此对象中的属性:

    <% println build.properties.collect{it}.join('<br />') %>

  2. 查看电子邮件模板输出。您可以使用 Jenkins"电子邮件模板测试"功能,也可以只运行您的作业。您应该会看到一大堆"KEY=VALUE"打印输出。

  3. 查找您感兴趣的环境变量。如果您的环境变量列在 environment={BUILD_NUMBER=45, BUILD_DISPLAY_NAME=#45...} 中,您只需调用 build.environment['BUILD_NUMBER'] 即可获得 45。

  4. 如果你想注入自定义环境变量,我建议安装Env Inject插件,通过该插件定义你的变量,然后在build.envVars中寻找变量

看来你可以试试这个

template.make(build.environment)

希望我理解了你的问题,但为了在模板中读取该参数,你需要像这样调用它(如果BUILD_NAME是 jenkins 作业中的一个参数:

${ENV, var="BUILD_NAME"}

这将返回该参数的值。

你可以做这样的事情来让它工作

 <td style="color: #153643; font-family: Arial, sans-serif;font-size: 14px;padding: 20px 0px;" width="60%">
                             <a  href="<%= build.absoluteUrl %>"> <%= build.envVars['JOB_BASE_NAME'] %>  </a>
                         
                          </td>

build.envVars 将所有 env 变量作为字典。使用键值对访问变量。

只需执行以下操作:

<% def env = build.environment %>
<% def name = env.build_name %>
<% if (name != "") { %>
  Name: <%=name %>
<% } %>

最新更新