Как получить адрес электронной почты текущего пользователя Jenkins для использования в Groovy скрипте
Я создал отличный скрипт для нового плагина Jenkins Workflow, https://github.com/jenkinsci/workflow-plugin. Я хочу, чтобы он отправил письмо пользователю, который запустил задание, когда ему потребуется ввод для следующего шага. Я пытался найти API, но не могу найти ничего о получении адреса электронной почты пользователя.
Я хотел бы думать о чем-то вроде этого.
import hudson.model.User
def user = User.current()
def mailAddress = user.getMailAddress()
Есть ли способ получить адрес текущего пользователя Jenkins в Groovy?
4 ответа
Я нашел путь:
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()
Вы можете получить доступ к объекту текущего пользователя с помощью метода current()
def user = hudson.model.User.current();
Адрес электронной почты можно получить так же, как и то, что вы сделали в своем ответе.
print user.getProperty(hudson.tasks.Mailer.UserProperty.class).getAddress();
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()
Вы можете получить имя автора, а затем использовать его для примера в почтовом реестре или что-то вроде этого:
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;
Если у вас есть доступ к build
переменная в коде Java вашего плагина (например, в setUp()
метод класса, который расширяет BuildWrapper
), вы можете получить зарегистрированного пользователя следующим образом:
@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()
...
}
Я не смог получить зарегистрированного пользователя с помощью User.current().getId()
это всегда возвращало меняSYSTEM
".
Надеюсь, поможет!
Вы можете использовать следующую процедуру:
import hudson.tasks.Mailer;
import hudson.model.User;
/**@
* Get user's email
*
* @param id null for a user who triggered the current build or name otherwise
* @return user's email
*/
def getUserEmail(String id=null) {
User user = User.getById(id ?: currentBuild.rawBuild.getCause(Cause.UserIdCause).getUserId(), false)
user?.getProperty(Mailer.UserProperty.class).getAddress()
}