2014-12-10 11 views
6

Ich weiß nicht, ob dies überhaupt möglich ist, aber immer noch hier fragen, ob jemand versucht hat/darüber nachgedacht.Senden Jenkins Konsole Ausgabe als HTML-E-Mail

Ich habe ein Build ausgeführt, dass, wenn fehlschlägt HTML-Code wie unten angegeben Echo. Ich möchte diesen HTML-Code als E-Mail an alle Empfänger senden.

Derzeit, wenn ich das einfache E-Mail-Plugin verwende, wird die gesamte Konsolenausgabe als eine E-Mail gesendet, die all diese HTML-Tags enthält (nicht lesbar). Dann habe ich das E-Mail-Ext-Plugin installiert, aber ich bin mir nicht sicher, ob das Pre-Send-Skript meine Konsolenausgabe lesen und E-Mails senden kann. Hat jemand es versucht? Lohnt es sich, Zeit damit zu verbringen, oder sollte ich nur die Ausgabe ändern, um formatierten Text anzuzeigen?

Dieser Build ist für interne Tools und ich kann keine HTML-Datei erstellen oder den Link zu der HTML-Datei als E-Mail senden, da der Pfad hinter der Firewall ist.

Ich weiß nicht, ob dies überhaupt unterstützt wird, aber ist es möglich, dass die Konsolenausgabe HTML-Ausgabe zeigt?

Danke für die Hilfe!

   <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>

Antwort

8

E-Mail-Ext-Plugin funktioniert gut mit HTML. Es liegt an Ihrem E-Mail-Client, HTML zu analysieren (aber das tun die meisten dieser Tage auch).

Die Frage ist: Wie erstellt Ihr Build diesen HTML-Code oben? Gibt es es in Datei aus? Wird es in der Konsolenausgabe angezeigt?

wenn der Text in Konsolausgabe verwenden:

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

<pre> Die Tags sind Abstands-/Formatierung zu bewahren.
Die regulären Ausdrücke start und end sollen die "Startlinie" angeben, von der aus das Protokoll angezeigt werden soll, und die "Endzeile", bei der die Protokollanzeige beendet wird.

Beachten Sie, dass die Zeilen start und end selbst ausgeschlossen sind. Also, in Ihrem Build, fügen Sie eine Kopfzeile und Fußzeilen kurz vor und direkt nach Ihrer HTML-Ausgabe, und verwenden Sie sie hier.

Als Referenz in der E-Mail-ext-Konfiguration, klicken Sie auf das Inhaltsreferenz Fragezeichen-Symbol ?

+0

Danke für die schnelle Antwort. Mein Build gibt dieses HTML in der Konsolenausgabe aus. Ich werde jetzt deine vorgeschlagene Methode ausprobieren! – Sumitk

+0

Also habe ich mit Ihrem Beispiel im Pre-Send-Skript versucht, aber es gibt mir eine seltsame Ausnahme. Ich habe das in meinen Pre-Send Block geschrieben: '$ {BUILD_LOG_EXCERPT, start =" \\ b (start-here) \\ b ", end =" \\ b (end-here) \\ b "} und meine Test PHP-Skript druckt diese beiden vor und nach dem HTML, aber ich bekomme 'org.codehouse.groovy.control.MultipleCompilationErrorsException: Start fehlgeschlagen: Script1.groovy: 1: unerwartetes Token: <@ Zeile 1, Spalte 1.

^ 1 Fehler' – Sumitk

+1

Nein nein ... das geht in den Körper der E-Mail, in 'Default Content', nicht' pre-send' – Slav

1

email-ext Plugin funktioniert für mich ziemlich gut. Versuche es.

+0

Dank I werde es jetzt versuchen! – Sumitk

4

So habe ich es mit Hilfe von @Slav gelöst.

Jenkins Job ausgeführt wurde diesen Skript:

<?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"; 

Der Auftrag mit email-ext konfiguriert wurde und in den hinzufügen Post-Build-action-> Editierbare E-Mail-Benachrichtigung -> Standard-Content Ich habe folgende:

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

Dies senden Sie die E-Mail als HTML-Inhalt und nicht den Text von HTML.

1

Gehen Sie auf "Manage-jenkins" -> "System konfigurieren" als auf der "Erweiterte E-Mail-Benachrichtigung" Einstellungen, legen Sie die folgenden Zeile in "Standardinhalt" text-Bereich

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