Jenkins - Уведомления по электронной почте - PullRequest
3 голосов
/ 03 ноября 2011

Я пытаюсь настроить электронную почту, используя Groovy с плагином email-ext. Добавляя новые функции к этим электронным письмам, я могу вносить ошибки в скрипты и получать плохие письма, содержащие StackTrace. Поэтому я хотел бы иметь возможность отправлять уведомления о выполненных работах, поскольку мои работы могут занимать много часов (в настоящее время их больше 4).
Есть ли способ попросить jenkins отправлять уведомления о выполненных заданиях (используя Groovy или любой другой язык сценариев)?

1 Ответ

0 голосов
/ 18 ноября 2011

найти решение:

import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import groovy.text.Template
import groovy.text.SimpleTemplateEngine
import javax.mail.*
import javax.mail.internet.*

//-------------- Job params --------------
projectName="YourProjectName";
buildNum = 10;
templateName="groovy-html-cobertura.template";
recipients="someone@somewhere.com";
sender="jenkins@somewhere.com";
smtpHost="mysmtphost";
//------------End Job params -------------

for (hudson.model.AbstractProject p : hudson.model.Hudson.instance.projects) {
  if(p.name.equals(projectName)){
    for (hudson.model.AbstractBuild b : p.getBuilds() ) {
      if(b.getNumber() == buildNum){
        println b;
        b.reload();
        def binding = [ "build" : b, 
                        "project" : b.getProject(),
                        "rooturl" : hudson.model.Hudson.getInstance().getRootUrl(),
                        "it" : new     hudson.plugins.emailext.plugins.content.ScriptContentBuildWrapper(b),
                        "spc" : "  " ]
        def engine = new SimpleTemplateEngine()
        java.io.File file = new java.io.File(hudson.model.Hudson.getInstance   ().getRootPath().getBaseName()+"/email-templates/"+templateName);
        mailBody = engine.createTemplate(file.getText()).make(binding).toString();
        port = 25
        props = new Properties()
        props.put('mail.smtp.host', smtpHost)
        props.put('mail.smtp.port', port.toString())
        session = Session.getDefaultInstance(props, null)

        // Construct the message
        msg = new MimeMessage(session)
        msg.from = new InternetAddress(sender)
        msg.sentDate = new Date()
        msg.subject = 'Template Test'
        msg.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients))
        msg.setHeader('Organization', 'i-BP')
        msg.setContent(mailBody,
                   'text/html')
        // Send the message
        Transport.send(msg)
      }
    }
  }
}
...