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変更したいテンプレートのスニペットは次のとおりです
- 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>