Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get build requestor using Groovy script (Jenkins / email-ext)

I want to get the username and/or email address of the build requestor in a post-build script.

Sidenote: I want the requestor so I can set the email sender of the post-build email notification dynamically in the email-ext plugin's pre-send script.

AbstractBuild has built-in support for AbstractBuild.getCulprits() and AbstractBuild.hasParticipant(User user) but I can't find a method for retrieving the requestor. I can't find any useful reference in reference list to the User class either.

like image 360
marius Avatar asked Sep 20 '25 06:09

marius


1 Answers

I managed to solve it via the Cause of the the build, as recommended in this answer.

The reason that the build requestor can be found in the cause for a build makes perfect sense when you think about it: Not every build is directly triggered by a user. If it is triggered by a user, the list of causes for the build contains a Cause.UserIdCause, with the user's id and name.

This code snippet worked for me. It extracts the username from the build via the cause and sets the From and ReplyTo headers. I use it in the pre-send script of the email-ext Jenkins plugin.

import javax.mail.internet.InternetAddress

cause = build.getCause(hudson.model.Cause.UserIdCause.class);
username = cause.getUserName()
id = cause.getUserId()
email = new InternetAddress(String.format("%s <%[email protected]>", username, id))

msg.setFrom(email)
msg.setReplyTo(email);
like image 126
marius Avatar answered Sep 22 '25 20:09

marius