【问题标题】:Jenkins email-ext plugin - Use scriptler to set msg sender email addressJenkins email-ext plugin - 使用 scriptler 设置 msg 发件人电子邮件地址
【发布时间】:2014-02-23 22:10:01
【问题描述】:

我在 $JENKINS_HOME/email-templates 下有一个名为 sender_email_address.groovy 的 groovy 脚本,其中包含以下代码

<%
StringBuilder builderEmail = new StringBuilder()
builderEmail.append("${build.buildVariables.get('BUILD_USER')}")
builderEmail.append("@collective.com")
def sender_email = builderEmail.toString()
%>
${sender_email}

我正在尝试从 email-ext 插件的预发送脚本设置电子邮件发件人地址。这是执行此操作的代码:

import javax.mail.Message.RecipientType
import javax.mail.Address
import javax.mail.internet.InternetAddress
import javax.mail.internet.MimeMessage

def senderAddress = ${SCRIPT, script="sender_email_address.groovy"}
listener.logger("Sender address = " + senderAddress)
msg.setFrom(new InternetAddress(senderAddress))

我收到以下错误:

def senderAddress = Error in script or template: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script1.groovy: 1: unexpected token: < @ line 1, column 1.
<%
^

我正在尝试将要发送的电子邮件的发件人地址设置为已登录的用户。我可以访问 ${BUILD_USER} 值。但是如果我直接在如下所示的预发送脚本中使用它

msg.setFrom(new InternetAddress("${BUILD_USER}")

脚本直接将 ${BUILD_USER} 令牌替换为脚本本身中的电子邮件地址。这违背了对其进行标记的目的,因为下次我使用其他用户登录时,无法替换该标记。有没有办法只保留令牌 ${BUILD_USER} 在其他地方实现它?

【问题讨论】:

    标签: jenkins email-ext


    【解决方案1】:

    如果您将 ${SCRIPT} 标记与“脚本”参数一起使用,则不需要像模板那样使用 。所以,你的代码应该是这样的:

    StringBuilder builderEmail = new StringBuilder()
    builderEmail.append("${build.buildVariables.get('BUILD_USER')}")
    builderEmail.append("@collective.com")
    builderEmail.toString()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-05
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多