Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Convert standard mail notifications to use the Mail-Ext Publisher plugin
This script replace mail notifications in all projects by Mail-Ext publisher plugin and re-uses existing recipients. The Mail-Ext is configured with :
- Recipient list : current recipient list defined in the project (the MailExt isn't activated if the project doesn't have yet a mail notification)
- Mail subject : default subject from global config
- Mail body : default body from global config
- Triggers : Failure, StillFailing, Unstable, StillUnstable, Fixed triggers are activated and send mails to the recipient list
It was tested on Freestyle and Maven projects with Hudson 1.346.
import hudson.plugins.emailext.* import hudson.plugins.emailext.plugins.trigger.* import hudson.model.* import hudson.maven.* import hudson.maven.reporters.* import hudson.tasks.* // For each project for(item in Hudson.instance.items) { def recipients println("JOB : "+item.name); // Find current recipients defined in project if(item instanceof MavenModuleSet) { println(">MAVEN MODULE SET"); // Search for Maven Mailer Reporter println(">>Reporters"); for(reporter in item.reporters) { println(">>> "+reporter); if(reporter instanceof MavenMailer) { // save recipients recipients = reporter.recipients // remove reporter item.reporters.remove(reporter) } } } else if(item instanceof FreeStyleProject) { println(">FREESTYLE PROJECT"); } println(">>Publishers"); for(publisher in item.publishersList) { println(">>> "+publisher); // Search for default Mailer Publisher (doesn't exist for Maven projects) if(publisher instanceof Mailer) { // save recipients recipients = publisher.recipients // remove publisher item.publishersList.remove(publisher) } else // Or for Extended Email Publisher if(publisher instanceof ExtendedEmailPublisher) { // save recipients (if it already exist it overrides others values) recipients = publisher.recipientList item.publishers.remove(publisher) // remove it item.publishersList.remove(publisher) } } // If we found recipients list to send mail if(recipients!=null){ println (">CURRENT RECIPIENT : "+recipients) // We create a new Extended Email Publisher def eep = new ExtendedEmailPublisher(); eep.recipientList = recipients eep.defaultSubject = "\$DEFAULT_SUBJECT" eep.defaultContent = "\$DEFAULT_CONTENT" // With some triggers eep.configuredTriggers.add(new FailureTrigger( email : new EmailType( sendToRecipientList : true, sendToDevelopers : true, includeCulprits : true, body : ExtendedEmailPublisher.PROJECT_DEFAULT_BODY_TEXT, subject : ExtendedEmailPublisher.PROJECT_DEFAULT_SUBJECT_TEXT ))) eep.configuredTriggers.add(new FixedTrigger( email : new EmailType( sendToRecipientList : true, sendToDevelopers : true, includeCulprits : true, body : ExtendedEmailPublisher.PROJECT_DEFAULT_BODY_TEXT, subject : ExtendedEmailPublisher.PROJECT_DEFAULT_SUBJECT_TEXT ))) eep.configuredTriggers.add(new StillFailingTrigger( email : new EmailType( sendToRecipientList : true, sendToDevelopers : true, includeCulprits : true, body : ExtendedEmailPublisher.PROJECT_DEFAULT_BODY_TEXT, subject : ExtendedEmailPublisher.PROJECT_DEFAULT_SUBJECT_TEXT ))) eep.configuredTriggers.add(new StillUnstableTrigger( email : new EmailType( sendToRecipientList : true, sendToDevelopers : true, includeCulprits : true, body : ExtendedEmailPublisher.PROJECT_DEFAULT_BODY_TEXT, subject : ExtendedEmailPublisher.PROJECT_DEFAULT_SUBJECT_TEXT ))) eep.configuredTriggers.add(new UnstableTrigger( email : new EmailType( sendToRecipientList : true, sendToDevelopers : true, includeCulprits : true, body : ExtendedEmailPublisher.PROJECT_DEFAULT_BODY_TEXT, subject : ExtendedEmailPublisher.PROJECT_DEFAULT_SUBJECT_TEXT ))) // And we add/replace it in the project item.publishersList.replace(eep); }else{ println (">NO RECIPIENT") } println("\n=======\n"); }