如何获取当前 Jenkins 用户的电子邮件地址以在 groovy 脚本中使用

问题描述 投票:0回答:7
我为新的 Jenkins 工作流插件创建了一个 groovy 脚本,

https://github.com/jenkinsci/workflow-plugin。我希望它在需要输入下一步时向开始该作业的用户发送邮件。我尝试搜索 API,但找不到任何有关获取用户电子邮件地址的信息。

我会想到这样的事情。

import hudson.model.User def user = User.current() def mailAddress = user.getMailAddress()

有没有办法在groovy中获取当前Jenkins用户的地址?

email groovy jenkins jenkins-workflow
7个回答
24
投票
我找到了方法:

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()
    

10
投票
可以通过方法访问当前用户的对象

current()



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

可以按照您在答案中所做的相同方式检索电子邮件地址。

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

3
投票
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()
    

2
投票
如果您可以访问插件 Java 代码中的

build

 变量(例如,在扩展 
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
”。

希望有帮助!


1
投票
您可以获取作者姓名,然后将其用作邮件注册表或类似内容的示例:

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;
    

0
投票
您可以使用以下例程:

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() }
    

0
投票
我的脚本如下:

import jakarta.mail.Message def cause = build.getCause(hudson.model.Cause.UserIdCause.class) def id = cause.getUserId() def user = hudson.model.User.get(id) def email = user.getProperty(hudson.tasks.Mailer.UserProperty.class).getAddress() msg.setRecipients(Message.RecipientType.TO, email)
    
© www.soinside.com 2019 - 2024. All rights reserved.