The developers list should work for this, it is what I use with git. On Wed, Jun 1, 2016, 05:11 Mike Lehan <[email protected]> wrote:
> I spent a long time searching for a way to have Jenkins email whichever > user pushed a branch (on BitBucket) with the notification of how the build > for that branch progressed. I wasn't able to find anything so wrote my own > solution and documented it on Stack Overflow. > > > http://stackoverflow.com/questions/37567901/setting-jenkins-to-email-a-build-notification-to-the-bitbucket-user-who-pushed-a > > Given this is a Jenkins community I though it might be helpful to share it > with you: > > *Question* > > A project repository has been successfully connected to a Jenkins server > using the BitBucket plugin, and a project set up such that: > > - Each push to a branch in BitBucket will trigger a webhook sent to > the Jenkins server > - When the Jenkins server receives the webhook it will build the > changed branch (by specifying branch name as ** in the config) > - After the build is complete a notification is sent back to BitBucket > of the build status using the BitBucket notifier > - Each of these has been easy to set up with just the instructions in > the plugin and a few quick Googles. However I've now run into a problem > which is maybe more a matter of wanting to run in an unconventional manner > than anything else. > > Using the normal emailer plugin or the Email-ext plugin it's possible to > set emails to send to people involved in the creation of a build. For > example the Email-ext plugin allows choice of: > > - Requester > - Developers (all people who have commits in the build based off its > last version) > - Recipient list (a pre-set list) > - Various "blame" settings for broken builds > > The development process being followed involves each project being worked > on by one developer in a named branch, e.g. userA/projectB. Obviously other > developers could check that out and push to make changes but that's frowned > upon. Even in that instance, the user who pushes the change to BitBucket > should be notified. > > None of the current settings support this. Requester is the closest, but > that only works for manual builds. It seems a very simple requirement that > the push to SCM that triggered a build should notify the user who pushed, > but this is not documented anywhere that is easy to find. > > *Answer* > > After a lot of searching it seems the only way to accomplish this is by > using a Pre-send script. This is added to the Advanced setting of the > Email-ext post-build step, and takes the form of code written in Groovy > which is a Java extension. > > The script can take advantage of Environment variables, but is hard to > test as there's no way to run the script with these in place. You can test > simple Groovy scripts from Home -> Manage Jenkins -> Script console. > > One important "gotcha" with the environment variables is that they are > "included" in the script, rather than variables or constants. E.g. before > the script compiles and runs, the content of the variable is pasted in > place of its $NAME. In the example below the multi-line string syntax is > used to include the BitBicket payload, whereas it might be expected that > def payload = $BITBUCKET_PAYLOAD > would simply work. > > import javax.mail.Address > import javax.mail.internet.InternetAddress > import javax.mail.internet.MimeMessage > import groovy.json.JsonSlurper > > > def jsonSlurper = new JsonSlurper() > > > def bitbucket = jsonSlurper.parseText(''' > $BITBUCKET_PAYLOAD''' > ) > > > switch (bitbucket.actor.username){ > case "userA": > msg.setRecipients(MimeMessage.RecipientType.TO, InternetAddress.parse( > "[email protected]")); > break; > case "userB": > msg.setRecipients(MimeMessage.RecipientType.TO, InternetAddress.parse( > "[email protected]")); > break; > } > > The setRecipients command overwrites any existing recipient. Thus the > recipient list or other email configuration can be set as a fallback for if > the user is not recognised. As added debugging, including the username in > the body might help. > > If the script fails, stack traces should be printed to the console log > output of the test, and the build pass/fail shouldn't be affected, but the > normal email address setup will be used instead. In stack traces look for > lines with Script() in them, as that's the container which evaluates the > Groovy script. > > -- > You received this message because you are subscribed to the Google Groups > "Jenkins Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jenkinsci-users/36c22ac1-0f20-4ce0-9d17-cb8ed116e458%40googlegroups.com > <https://groups.google.com/d/msgid/jenkinsci-users/36c22ac1-0f20-4ce0-9d17-cb8ed116e458%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CAPiUgVfwLxx53Jag%2Bm8qjyVBOTA-gw2%3DKtimzaF5Nn9aHqz%2BDg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
