8

我有一个使用插件的 Jenkins 服务器ansicoloremail-ext. Jenkins 运行带有 ANSI 转义文本的脚本,这些文本在 Jenkins Web GUI 的控制台输出上被正确转换为彩色编码的 HTML。

Email-ext 用于使用基于内置模板的 Jelly 脚本模板发送包含日志文件的电子邮件 html(即Default Contentbox 具有 value ${JELLY_SCRIPT,template="html_modified"})。但是,即使电子邮件Content Type设置为,电子邮件中的日志数据也没有进行颜色编码HTML

根据email-ext docs中的 Jelly 提示,可以

...通过查询构建操作来获取其他插件操作的对象,例如: ${it.getAction('hudson.plugins.fitnesse.FitnesseResultsAction')}

我认为这可以用来解决以下问题,但我不确定如何。如何使用it.getAction()Jelly 模板中的功能来使用ansicolorHTML 发射器?我已经尝试查看源代码以找到可以在 Jelly 提示示例中使用的“操作”。

请注意,由于某种原因,内置html模板使用的日志数据似乎提供原始的 ANSI 转义日志文本。如果这样的文本是通过 ansicolor 传递的,它不会得到 HTML 标记,因为没有要转换的 ANSI 标记。因此,模板中的循环应该从日志文件中提取。 build.getLog(100)html

这是html我要修改的模板片段

  1. 从文件中提取日志而不是 build.getLog(100)
  2. 传递文本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>

4

0 回答 0