【问题标题】:Get build requestor using Groovy script (Jenkins / email-ext)使用 Groovy 脚本(Jenkins / email-ext)获取构建请求者
【发布时间】:2014-08-18 20:59:01
【问题描述】:

我想在构建后脚本中获取构建请求者的用户名和/或电子邮件地址。

旁注:我想要请求者,这样我就可以在 email-ext 插件的预发送脚本中动态设置构建后电子邮件通知的电子邮件发件人。

AbstractBuild 具有对AbstractBuild.getCulprits()AbstractBuild.hasParticipant(User user) 的内置支持,但我找不到检索请求者的方法。我在reference list 中也找不到对User 类的任何有用参考。

【问题讨论】:

    标签: groovy jenkins email-ext


    【解决方案1】:

    我设法通过构建的Cause 解决了这个问题,如recommended in this answer

    如果您仔细想想,可以在构建的原因中找到构建请求者的原因是完全有道理的:并非每个构建都是由用户直接触发的。 如果它是由用户触发的,则构建原因列表包含一个Cause.UserIdCause,以及用户的 ID 和名称。

    这段代码 sn-p 对我有用。它通过原因从构建中提取用户名并设置 From 和 ReplyTo 标头。我在email-ext Jenkins 插件的预发送脚本中使用它。

    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 <%s@example.com>", username, id))
    
    msg.setFrom(email)
    msg.setReplyTo(email);
    

    【讨论】:

    • 感谢脚本!注意,我使用以下内置的 Jenkins API 方法来获取电子邮件:hudson.model.User user = hudson.model.User.get(cause.getUserId);email = user.getProperty(hudson.tasks.Mailer.UserProperty).getAddress() ;
    猜你喜欢
    • 2021-04-27
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多