如何通过JELLY_SCRIPT在Jenkins中将ansicolor与email-ext结合使用?

ham*_*x0r 5 jelly jenkins-plugins email-ext

我有一个使用插件ansicolor和的Jenkins服务器email-ext。Jenkins使用ANSI转义的文本运行脚本,该脚本已在Jenkins Web GUI的控制台输出上正确转换为以颜色编码的HTML。

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

根据在果冻提示电子邮件-EXT文档,可以

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

我认为这可以用来解决以下问题,但是我不确定如何解决。一个人如何it.getAction()在Jelly模板中使用该函数来利用ansicolorHTML发射器?我尝试查看源代码以找到可以在Jelly技巧示例中使用的“动作”。

需要注意的是它出现在被收购的日志数据的内置html模板使用build.getLog(100)其中,出于某种原因,并没有提供原ANSI转义日志文本。如果此类文本通过ansicolor传递,则不会有HTML标记,因为没有要转换的ANSI标记。因此,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>
Run Code Online (Sandbox Code Playgroud)