2015-07-16 6 views
6

Attualmente sto utilizzando la versione 1.617 di jenkins con l'ultimo plug-in di notifica di Email modificabile.Creazione della voce calendario in jenkins utilizzando lo script pre-email

Quello che stiamo cercando di fare è prendere le modifiche dalla build e metterle in un avviso di riunione (Calender Entry).

Attualmente siamo bloccati utilizzando le note di loto 8.5.3FP6.

Ecco le nostre variabili del plugin:

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} 

Stiamo cercando di utilizzare il seguente script Presend:

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

Questo è quello che abbiamo capito da questo script, sembra che lo script sta prendendo una email che è già stata creata, analizzando i valori e cambiandola in una voce di calendario. Tuttavia, quando eseguiamo questo script, crea la voce del calendario, ma ottiene solo la prima riga di testo nella sezione del contenuto predefinito del messaggio di posta elettronica.

Ecco un esempio di e-mail che si crea:

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 

nostra convocazione effettiva viene visualizzata come la seguente:

controllare l'output della console a http://servername per visualizzare i risultati. Con il file email elencato sopra allegato.

Si noti che la riga che è stata prodotta è la variabile DEFAULT_CONTENT elencata sopra.

Abbiamo già provato quanto segue:

def env = System.getenv() 
def version = env['CHANGES_SINCE_LAST_SUCCESS'] 

Tuttavia, questo ha restituito un valore NULL. Apprezzerei qualsiasi aiuto che potremmo ottenere per risolvere il nostro problema.

risposta

0

Per più righe in una descrizione in un file di calendario, è necessario inserire un escape \ n invece di una nuova riga reale.

Problemi correlati