Ich verwende derzeit jenkins Version 1.617 mit der neuesten bearbeitbaren E-Mail-Benachrichtigung Plugin.Erstellen von Kalendereintrag in Jenkins mit Vor-E-Mail-Skript
Wir versuchen, die Änderungen aus dem Build zu übernehmen und sie in eine Besprechungsbenachrichtigung (Kalendereintrag) einzufügen.
Wir stecken derzeit fest mit Lotus Notes 8.5.3FP6.
Hier unsere Variablen im Plugin sind:
Project Recipient List = $SERVER_GROUP
Content Type = HTML(text/html)
Default Subject = $DEFAULT_SUBJECT
Default Content =
$DEFAULT_CONTENT
Repo: myRepo
Install Location: S:\Build\VAT - Visual Authoring Tool\SERVICELOGIQ \GM\VAT_${ENV, var="miniVersion"}\VAT_${ENV, var="releaseversion"}_SERVICELOGIQ [${ENV, var="BUILD_NUMBER"}]
Change Log:
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, showPaths=true}
Wir versuchen, die folgenden presend Skript zu verwenden:
import javax.mail.Message
import javax.mail.Message.RecipientType
import javax.mail.Address
import javax.mail.Multipart
import javax.mail.BodyPart
import javax.mail.internet.InternetAddress
import javax.mail.internet.MimeMessage
import javax.mail.Session
import javax.mail.internet.InternetAddress
import javax.mail.internet.MimeBodyPart
import javax.mail.internet.MimeMessage
import javax.mail.internet.MimeMultipart
import javax.mail.util.ByteArrayDataSource
import java.util.Date
import java.util.Calendar
import java.util.TimeZone
import java.text.DateFormat
import java.text.SimpleDateFormat
import javax.activation.DataHandler
msg.addHeaderLine("method=REQUEST");
msg.addHeaderLine("charset=UTF-8");
msg.addHeaderLine("component=VEVENT");
final Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR, 1);
final Date start = cal.getTime();
cal.add(Calendar.HOUR, 1);
final Date end = cal.getTime();
SimpleDateFormat dateFmt = new SimpleDateFormat("yyyyMMdd'T'hhmmssZ");
String fmtStartDate = dateFmt.format(start);
String fmtEndDate = dateFmt.format(end);
String subject = msg.getSubject()
Multipart multi = (Multipart)msg.getContent()
BodyPart part = multi.getBodyPart(0)
String body = part.getContent().toString()
String from = "[email protected]"
Address[] toAddresses = msg.getAllRecipients()
String to = toAddresses.each{ it.toString() }.join(",")
String content =
"BEGIN:VCALENDAR\n"+
"PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN\n"+
"VERSION:2.0\n" +
"METHOD:REQUEST\n" +
"BEGIN:VEVENT\n" +
"ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:" + to + "\n" +
"ORGANIZER:MAILTO:" + from + "\n" +
"DTSTART:" + fmtStartDate + "\n" +
"DTEND:" + fmtEndDate + "\n" +
"LOCATION:Jenkins Build\n" +
"TRANSP:OPAQUE\n" +
"SEQUENCE:0\n" +
"UID:040000008200E00074C5B7101A82E00800000000002FF466CE3AC5010000000000000000100\n" +
" 000004377FE5C37984842BF9440448399EB02\n" +
"DTSTAMP:20051206T120102Z\n" +
"CATEGORIES:Meeting\n" +
"DESCRIPTION:" + body + "\n\n" +
"SUMMARY:" + subject + "\n" +
"PRIORITY:5\n" +
"CLASS:PUBLIC\n" +
"BEGIN:VALARM\n" +
"TRIGGER:PT1440M\n" +
"ACTION:DISPLAY\n" +
"DESCRIPTION:Reminder\n" +
"END:VALARM\n" +
"END:VEVENT\n" +
"END:VCALENDAR";
// Create the message part
MimeBodyPart messageBodyPart = new MimeBodyPart();
// Fill the message
messageBodyPart.setHeader("Content-Class", "urn:content-classes:calendarmessage");
messageBodyPart.setHeader("Content-ID","calendar_message");
messageBodyPart.setDataHandler(new DataHandler(
new ByteArrayDataSource(content, "text/calendar")));//very important
// Create a Multipart
MimeMultipart multipart = new MimeMultipart();
// Add part one
multipart.addBodyPart(messageBodyPart);
// Put parts in message
msg.setContent(multipart);
Dies ist, was wir von diesem Skript zu verstehen, es sieht aus wie das Drehbuch nimmt eine E-Mail, die bereits erstellt wurde, analysiert die Werte und wandelt sie in einen Kalendereintrag um. Wenn wir dieses Skript ausführen, erstellt es zwar den Kalendereintrag, erhält jedoch nur die erste Textzeile im Standardinhaltsabschnitt der E-Mail. Hier
ist ein Beispiel für die E-Mail, die erstellt wird:
BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:myemail
ORGANIZER:MAILTO:[email protected]
DTSTART:20150716T123802-0400
DTEND:20150716T013802-0400
LOCATION:Jenkins Build
TRANSP:OPAQUE
SEQUENCE:0
UID:040000008200E00074C5B7101A82E00800000000002FF466CE3AC5010000000000000000100
000004377FE5C37984842BF9440448399EB02
DTSTAMP:20051206T120102Z
CATEGORIES:Meeting
DESCRIPTION:Check console output at http://usfhmtsapp09.na.global.mahle:8080/job/Test_Project_Sean2/77/ to view the results.
Repo: http://usnomtsapp01/hg/hgweb.cgi/GM%20ServiceLogiq
Install Location: S:\Build\VAT - Visual Authoring Tool\SERVICELOGIQ\GM\VAT_\VAT__SERVICELOGIQ [77]
Change Log:
Changes for Build #77
No changes
SUMMARY:Test_Project_Sean2 Build Successful!
PRIORITY:5
CLASS:PUBLIC
BEGIN:VALARM
TRIGGER:PT1440M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
Unsere eigentliche Einladung zur Versammlung wie folgt angezeigt:
überprüfen Konsolenausgabe bei http://servername zu die Resultate zu sehen. Mit der oben aufgeführten E-Mail-Datei angehängt.
Bitte beachten Sie, dass die Zeile, die ausgegeben wurde, die oben aufgelistete DEFAULT_CONTENT Variable ist.
Wir haben bereits versucht, die folgenden:
def env = System.getenv()
def version = env['CHANGES_SINCE_LAST_SUCCESS']
Dies ist jedoch ein Nullwert zurückgegeben. Ich würde jede Hilfe schätzen, die wir bekommen konnten, um unser Problem zu lösen.