我想在构建后脚本中获取构建请求者的用户名和/或电子邮件地址。
旁注:我想要请求者,因此我可以在 email-ext 插件的预发送脚本中动态设置构建后电子邮件通知的电子邮件发件人。
AbstractBuild
具有内置支持AbstractBuild.getCulprits()
,AbstractBuild.hasParticipant(User user)
但我找不到检索请求者的方法。我在类的参考列表中也找不到任何有用的参考User
。
我想在构建后脚本中获取构建请求者的用户名和/或电子邮件地址。
旁注:我想要请求者,因此我可以在 email-ext 插件的预发送脚本中动态设置构建后电子邮件通知的电子邮件发件人。
AbstractBuild
具有内置支持AbstractBuild.getCulprits()
,AbstractBuild.hasParticipant(User user)
但我找不到检索请求者的方法。我在类的参考列表中也找不到任何有用的参考User
。
按照这个答案中的建议,我设法通过Cause
构建解决了这个问题。
仔细想想,可以在构建的原因中找到构建请求者的原因是完全合理的:并非每个构建都是由用户直接触发的。如果它是由用户触发的,则构建的原因列表包含一个Cause.UserIdCause
,以及用户的 ID 和名称。
这个代码片段对我有用。它通过原因从构建中提取用户名并设置 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);