将jenkins环境变量合并到groovy模板中以进行电子邮件通知

时间:2013-09-19 07:37:42

标签: groovy jenkins jenkins-plugins

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

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

我还使用“将环境变量注入构建过程帮助功能:将环境变量注入构建过程”并定义我的变量如下

BUILD_NAME=${BUILD_NAME}

当执行构建时,BUILD_NAME被接受作为参数。

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

5 个答案:

答案 0 :(得分:4)

如果您使用email-ext Jenkins插件发送电子邮件,则会有一个“构建”对象,其中包含有关您的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 Plugin,通过该插件定义变量,然后在build.envVars中查找变量

答案 1 :(得分:1)

看来你可以试试这个

template.make(build.environment)

Source

答案 2 :(得分:1)

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

${ENV, var="BUILD_NAME"}

这将返回该参数的值。

答案 3 :(得分:0)

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

 <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 变量作为字典。使用键值对访问变量。

答案 4 :(得分:-1)

只是做:

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