我有一个使用插件的 Jenkins 服务器ansicolor
和email-ext
. Jenkins 运行带有 ANSI 转义文本的脚本,这些文本在 Jenkins Web GUI 的控制台输出上被正确转换为彩色编码的 HTML。
Email-ext 用于使用基于内置模板的 Jelly 脚本模板发送包含日志文件的电子邮件 html
(即Default Content
box 具有 value ${JELLY_SCRIPT,template="html_modified"}
)。但是,即使电子邮件Content Type
设置为,电子邮件中的日志数据也没有进行颜色编码HTML
。
根据email-ext docs中的 Jelly 提示,可以
...通过查询构建操作来获取其他插件操作的对象,例如:
${it.getAction('hudson.plugins.fitnesse.FitnesseResultsAction')}
我认为这可以用来解决以下问题,但我不确定如何。如何使用it.getAction()
Jelly 模板中的功能来使用ansicolor
HTML 发射器?我已经尝试查看源代码以找到可以在 Jelly 提示示例中使用的“操作”。
请注意,由于某种原因,内置html
模板使用的日志数据似乎不提供原始的 ANSI 转义日志文本。如果这样的文本是通过 ansicolor 传递的,它不会得到 HTML 标记,因为没有要转换的 ANSI 标记。因此,模板中的循环应该从日志文件中提取。 build.getLog(100)
html
这是html
我要修改的模板片段
- 从文件中提取日志而不是 build.getLog(100)
- 传递文本
ansicolor
以使其成为漂亮的 HTML
<TABLE width="100%" cellpadding="0" cellspacing="0">
<TR>
<TD class="bg1">
<A href="${rooturl}${build.url}">${rooturl}${build.url}><B>CONSOLE OUTPUT</B></A>
</TD>
</TR>
<j:forEach var="line" items="${build.getLog(100)}">
<TR>
<TD class="console">${line}</TD>
</TR>
</j:forEach>
</TABLE>