我为 jenkins 上的一个项目定义了几个环境变量,其中我想将一些环境变量合并到构建成功之前和之后发送的电子邮件通知中。
但groovy.text.Template
似乎不接受这些环境变量。
我还使用了“将环境变量注入构建过程帮助功能:将环境变量注入构建过程”并将我的变量定义如下
BUILD_NAME=${BUILD_NAME}
whereBUILD_NAME
在我执行构建时被接受为参数。
请有人可以帮我解决这个问题。
我为 jenkins 上的一个项目定义了几个环境变量,其中我想将一些环境变量合并到构建成功之前和之后发送的电子邮件通知中。
但groovy.text.Template
似乎不接受这些环境变量。
我还使用了“将环境变量注入构建过程帮助功能:将环境变量注入构建过程”并将我的变量定义如下
BUILD_NAME=${BUILD_NAME}
whereBUILD_NAME
在我执行构建时被接受为参数。
请有人可以帮我解决这个问题。
如果您使用 email-ext Jenkins 插件发送电子邮件,则有一个“构建”对象,其中包含有关您的 Jenkins 工作的大量信息。
我会做以下事情:
通过将以下代码添加到模板中,打印出该对象内的属性:
<% println build.properties.collect{it}.join('<br />') %>
查看电子邮件模板输出。您可以使用 Jenkins 的“电子邮件模板测试”功能,也可以只运行您的工作。您应该会看到一大堆“KEY=VALUE”打印输出。
查找您感兴趣的环境变量。如果您的环境变量在 中列出environment={BUILD_NUMBER=45, BUILD_DISPLAY_NAME=#45...}
,您只需调用build.environment['BUILD_NUMBER']
获取 45。
如果您想注入自定义环境变量,我建议安装Env Inject Plugin,通过该插件定义变量,然后在 build.envVars 中查找变量
希望我理解您的问题,但是为了在模板中读取该参数,您需要像这样调用它(如果 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 将所有环境变量作为字典。使用键值对访问变量。
做就是了:
<% def env = build.environment %>
<% def name = env.build_name %>
<% if (name != "") { %>
Name: <%=name %>
<% } %>