How to get e-mail address of current Jenkins user to use in groovy script

╄→尐↘猪︶ㄣ 提交于 2019-12-04 01:19:41

I found a way:

import hudson.model.AbstractProject
import hudson.tasks.Mailer
import hudson.model.User

def item = hudson.model.Hudson.instance.getItem(env.JOB_NAME) 
def build = item.getLastBuild()
def cause = build.getCause(hudson.model.Cause.UserIdCause.class)
def id = cause.getUserId()
User u = User.get(id)
def umail = u.getProperty(Mailer.UserProperty.class)
print umail.getAddress()

You can access the object of the current user with the method current()

def user = hudson.model.User.current();

The email address can be retrieved in the same way as to what you have done in your answer.

print user.getProperty(hudson.tasks.Mailer.UserProperty.class).getAddress();

You can get the author name and then use it for an example on a mailing registry or something like that:

 def author = ""
 def changeSet = currentBuild.rawBuild.changeSets               
 for (int i = 0; i < changeSet.size(); i++) 
    {
       def entries = changeSet[i].items;
       for (int i = 0; i < changeSet.size(); i++) 
                {
                           def entries = changeSet[i].items;
                           def entry = entries[0]
                           author += "${entry.author}"
                } 
     }
     print author;

If you have access to the build variable in the Java code of your plugin (for instance in the setUp() method of the class that extends BuildWrapper), you can get the currently logged user this way :

@Override
public MyJenkinsPlugin setUp(AbstractBuild build, Launcher launcher, BuildListener listener)

    String connectedUser = build.getCause(Cause.UserIdCause.class).getUserId();
    String mail = User.get(connectedUser.getProperty(hudson.tasks.Mailer.UserProperty.class).getEmailAddress()
...
}

I have not been able to get the logged user using User.current().getId(), it always returned me 'SYSTEM'.

Hope it helps!

import hudson.tasks.Mailer;
import hudson.model.User;
import hudson.model.Cause;
import hudson.model.Cause.UserIdCause;

def cause = build.getCause(hudson.model.Cause$UserIdCause)
def id = cause.getUserId()
User u = User.get(id)
def umail = u.getProperty(Mailer.UserProperty.class)
print umail.getAddress()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!