web-dev-qa-db-ja.com

Jenkinsコンソール出力をHTMLメールとして送信する

これが可能かどうかはわかりませんが、誰かが試みたり考えたりしていないかどうかを確認するために、ここで尋ねます。

失敗したときに以下のようにHTMLコードをエコーするビルドを実行しています。このhtmlを電子メールとしてすべての受信者に送信します。

現在、単純な電子メールプラグインを使用すると、コンソール出力全体が、これらのすべてのhtmlタグを含む電子メールとして送信されます(まったく読み取れない)。次に、Email Extプラグインをインストールしましたが、送信前スクリプトがコンソール出力を読み取ってEメールを送信できるかどうかがわかりません。誰かがそれを試しましたか?時間をかける価値はありますか、それともフォーマットされたテキストを表示するように出力を変更するだけですか?

このビルドは内部ツール用であり、パスがファイアウォールの背後にあるため、.htmlファイルを作成したり、.htmlファイルへのリンクを電子メールとして送信したりできません。

これがサポートされているかどうかはわかりませんが、コンソール出力にhtml出力が表示される可能性はありますか?

助けてくれてありがとう!

                <style type="text/css">
                    table.gridtable {
                    font-family: verdana,arial,sans-serif;
                        font-size:11px;
                        color:#333333;
                        border-width: 1px;
                        border-color: #666666;
                        border-collapse: collapse;
                    }
                    table.gridtable th {
                    border-width: 1px;
                        padding: 8px;
                        border-style: solid;
                        border-color: #666666;
                        background-color: #dedede;
                    }
                    table.gridtable td {
                    border-width: 1px;
                        padding: 8px;
                        border-style: solid;
                        border-color: #666666;
                        background-color: #ffffff;
                    }
                </style>

                <table class="gridtable">
                    <thead>
                        <tr>
                          <th>Service Checked</th>
                          <th>Status</th>
                          <th>Response</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                          <td>canary</td>
                          <td>Success</td>
                          <td>Please override the check() method</td>
                        </tr>

                        <tr>
                          <td style="color: red;"><strong>www.mysite.com</strong></td>
                          <td style="color: red;">Failure</td>
                          <td>Ping to https://www.mysite.com/canary?from=here FAILED</td>
                        </tr></tbody></table>
11
Sumitk

Email ExtプラグインはHTMLで問題なく動作します。 HTMLを解析するかどうかは、電子メールクライアント次第です(ただし、最近でもほとんどの場合)。

問題は、あなたのビルドはどのようにしてこのHTMLを出力するかということです。ファイルに出力しますか?コンソール出力に表示されますか?

テキストがコンソール出力にある場合は、次を使用します。

<pre>${BUILD_LOG_EXCERPT, start="Regex-for-start", end="Regex-for-end"}</pre>

<pre>タグは、間隔/フォーマットを保持するためのものです。
startおよびend正規表現は、ログの表示を開始する「開始行」とログの表示を停止する「終了行」を識別するためのものです。

startおよびend行自体は除外されることに注意してください。そのため、ビルドでは、html出力の直前と直後にヘッダー行とフッター行を配置し、ここで使用します。

参考までに、email-ext設定で、コンテンツ参照疑問符アイコンをクリックします。 ?

12
Slav

これが @ Slav の助けを借りて解決した方法です。

ジェンキンスの仕事はこのスクリプトを実行していました:

<?php
echo "start-here\n";
echo "<html><body><table border=1>
<tr><td>yello1111</td><td>11111bbbbbbb</td></tr>
<tr><td>yelloooo</td><td>bbbbbbb</td></tr>
</table></body></html>";
echo "end-here\n";

ジョブは email-ext およびAdd post-build action-> Editable Email Notification-> Default Contentで構成されました私は以下を入れました:

${BUILD_LOG_EXCERPT, start="\\b(start-here)\\b", end="\\b(end-here)\\b"}

これは、htmlのテキストではなく、htmlコンテンツとしてメールを送信します。

4
Sumitk

「Manage-jenkins」->「configure system」に移動します。「Extended E-mail Notification」設定より、以下の行を「default content」テキスト領域に配置します

<pre>${BUILD_LOG, maxLines=9999, escapeHtml=false}</pre>
3
Ajeet Khan

email-ext プラグインは私にはかなりうまく機能します。試してみる。

1
devesh

ファイアウォールの内側にいる場合でも、HTMLファイルをワークスペースに(スクリプトから)書き込むことができるはずです。次に、このファイルを${FILE,path="PATH"}を使用してメール本文に送信/送信できます。

0
Robert