将Jenkins控制台输出作为HTML电子邮件发送

时间:2014-12-10 20:38:43

标签: html email jenkins build jenkins-plugins

我不知道这是否可能,但仍然在这里询问是否有人尝试过/想过它。

我有一个构建运行,当失败回应出html代码,如下所示。我想将此html作为电子邮件发送给所有收件人。

目前,当我使用简单的电子邮件插件时,整个控制台输出将作为电子邮件发送,其中包含所有这些html标签(完全不可读)。然后我安装了Email Ext插件,但我不确定预发送脚本是否可以读取我的控制台输出并发送电子邮件。有人试过吗?是否值得花时间或者我应该修改输出以显示格式化文本?

此版本适用于内部工具,我无法创建.html文件或将链接作为电子邮件发送到.html文件,因为路径位于防火墙后面。

我不知道是否支持这个,但控制台输出是否可能显示html输出?

感谢您的帮助!

                <style type="text/css">
                    table.gridtable {
                    font-family: verdana,arial,sans-serif;
                        font-size:11px;
                        color:#333333;
                        border-width: 1px;
                        border-color: #666666;
                        border-collapse: collapse;
                    }
                    table.gridtable th {
                    border-width: 1px;
                        padding: 8px;
                        border-style: solid;
                        border-color: #666666;
                        background-color: #dedede;
                    }
                    table.gridtable td {
                    border-width: 1px;
                        padding: 8px;
                        border-style: solid;
                        border-color: #666666;
                        background-color: #ffffff;
                    }
                </style>

                <table class="gridtable">
                    <thead>
                        <tr>
                          <th>Service Checked</th>
                          <th>Status</th>
                          <th>Response</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                          <td>canary</td>
                          <td>Success</td>
                          <td>Please override the check() method</td>
                        </tr>

                        <tr>
                          <td style="color: red;"><strong>www.mysite.com</strong></td>
                          <td style="color: red;">Failure</td>
                          <td>Ping to https://www.mysite.com/canary?from=here FAILED</td>
                        </tr></tbody></table>

4 个答案:

答案 0 :(得分:11)

电子邮件Ext插件适用于HTML。由您的电子邮件客户端来解析HTML(但是,这些日子大部分时间都是如此)。

问题是:你的构建如何在上面输出这个HTML?它输出到文件?它是否在控制台输出中显示?

如果文本在控制台输出中,请使用:

<pre>${BUILD_LOG_EXCERPT, start="Regex-for-start", end="Regex-for-end"}</pre>

<pre>标记用于保留间距/格式 startend正则表达式用于标识&#34;起始行&#34;从哪个开始显示日志,&#34;结束行&#34;停止显示日志。

请注意,排除了startend行本身。因此,在您的构建中,在html输出之前和之后放置页眉和页脚行,并在此处使用它们。

作为参考,在email-ext配置中,点击内容参考问号图标

答案 1 :(得分:4)

所以这就是我在@Slav的帮助下解决它的方法。

Jenkins的工作正在运行这个脚本:

<?php
echo "start-here\n";
echo "<html><body><table border=1>
<tr><td>yello1111</td><td>11111bbbbbbb</td></tr>
<tr><td>yelloooo</td><td>bbbbbbb</td></tr>
</table></body></html>";
echo "end-here\n";

作业配置了email-ext,并在添加构建后操作 - &gt;可编辑电子邮件通知 - &gt;默认内容我提出以下内容:

${BUILD_LOG_EXCERPT, start="\\b(start-here)\\b", end="\\b(end-here)\\b"}

这会将电子邮件发送为html内容,而不是html文本。

答案 2 :(得分:3)

转到“Manage-jenkins” - &gt;“配置系统” 与“扩展电子邮件通知”设置相比,将以下行放在“默认内容”文本区域

<pre>${BUILD_LOG, maxLines=9999, escapeHtml=false}</pre>

答案 3 :(得分:0)

即使您位于防火墙后面,也应该能够(通过脚本)将HTML文件写入工作区。 然后,您可以使用以下格式将该文件发送为/包含在邮件正文中 ${FILE,path="PATH"}