8

ansicolorプラグインとを使用する Jenkins サーバーがありますemail-ext。Jenkins は、Jenkins Web GUI のコンソール出力で色分けされた HTML に適切に変換される ANSI エスケープ テキストを使用してスクリプトを実行します。

Email-ext は、組み込みのテンプレートに基づいた Jelly スクリプト テンプレートを使用して、ログ ファイルを含む電子メールを送信するために使用されています html(つまり、Default Contentボックスには値があります${JELLY_SCRIPT,template="html_modified"})。Content Typeただし、電子メールが に設定されていても、電子メール内のログ データは色分けされていませんHTML

email-ext docsの Jelly のヒントによると、次のことができます。

...次のようなビルド アクションを照会して、他のプラグイン アクションのオブジェクトを取得します。 ${it.getAction('hudson.plugins.fitnesse.FitnesseResultsAction')}

これを使って次の問題を解決できると思いますが、方法がわかりません。の HTML エミッターit.getAction()を利用するために、Jelly テンプレートで関数を使用するにはどうすればよいですか? ソースを調べて、ジェリー チップの例で使用できる「アクション」を見つけよ ansicolorうとしました。

ビルトインhtmlテンプレートで取得されているログ データはbuild.getLog(100)、何らかの理由で元の ANSI エスケープ ログ テキストを提供していないように見えることに注意してください。そのようなテキストが ansicolor を介して渡された場合、変換する ANSI タグがないため、HTML タグは付けられません。したがって、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