How to set programmatically recipients of Jenkins

2020-03-30 09:40发布

问题:

I'm trying to set the recipients of the Email-ext (aka Editable Email Notficiation) to the owners of failed tests. Since the owners can't be calculated until after a build fails, the Inject Environment Variables plugin can't be used.

How can this be done?

回答1:

In the Advanced... section create the following Pre-send Script:

import javax.mail.Message
import javax.mail.internet.InternetAddress

msg.addRecipient(Message.RecipientType.TO, new InternetAddress('recipient@example.com'))

You'll also need to set Project Recipient List (maybe to some dummy value) since if it's empty, the plugin decides there's nothing to do.

The script runs on the master so you'll need to ssh onto the slave from the master if you need to process its workspace.



回答2:

If you need to read list of recipients from file on remote agent, expand above answer with FilePath:

import javax.mail.Message
import javax.mail.internet.InternetAddress

fp = new FilePath(build.workspace, build.workspace.toString() + "/recipients.txt")
emails = fp.readToString().split("\n")

for (email in emails) {
    msg.addRecipient(Message.RecipientType.TO, new InternetAddress(email))
}