Jenkins - 电子邮件通知

时间:2011-11-03 09:53:47

标签: notifications jenkins

我正在尝试使用带有email-ext插件的Groovy自定义电子邮件。当我为这些电子邮件添加新功能时,我可能会在脚本中引入错误,因此接收包含StackTrace的错误邮件。因此,我希望能够发送已完成作业的通知,因为我的工作可能需要很长时间(目前超过4小时)。
有没有办法让jenkins发送已完成作业的通知(使用Groovy或任何其他脚本语言)?

1 个答案:

答案 0 :(得分:0)

找到解决方案:

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