1

我正在使用 Email Ext Jenkins 插件,它运行良好。

现在我需要动态设置收件人列表。基本上,对于每个构建,我都会在一个文件中获得一个电子邮件收件人列表,我需要使用该列表。我的问题是:

  • 有没有办法设置环境变量,以便可以对其进行修改,并且收件人列表将使用该环境变量。

  • 我知道有一种解决方案可以在预发送脚本中以编程方式设置 Jenkins Email-ext 插件的收件人。如何以编程方式设置詹金斯电子邮件分机插件的收件人。但是,就我而言,该解决方案存在一些困难,因为我需要读取包含电子邮件列表的文件。

4

3 回答 3

1

如果文件的格式是逗号分隔或空格分隔,您可以只使用 FILE 标记(请参阅插件中的内容标记参考)。那应该将文件的内容放入收件人列表中。

于 2014-02-23T04:16:27.767 回答
0

您可以使用 Inject 环境变量插件 ( https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin ) 并在运行时创建 var,或 Propagate 构建环境变量 ( https://wiki .jenkins-ci.org/display/JENKINS/Build+Env+Propagator+Plugin)更改现有的,然后您可以在使用可编辑电子邮件通知时在项目收件人列表中使用此变量(https://wiki .jenkins-ci.org/display/JENKINS/Email-ext+plugin )

于 2015-02-13T17:19:44.887 回答
0

我现在无法对此进行测试,所以我不记得 apache commons 是否可用。

创建一个名为 recipients.groovy 的文件,其内容如下:

<%
  def stream = new FilePath(build.workspace, "yourfile.txt").read();
  def recipients = IOUtils.toString(stream, "UTF-8");
%>

${recipients}

在您的工作配置中,在收件人列表中,您输入 ${SCRIPT, script="recipients.groovy"}

API 参考:

引用Recipient List中的 recipients.groovy ,会出现以下异常:

Failed to create e-mail address for Error in script or template: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script1.groovy: 1:

unexpected token: < @ line 1, column 1. <% ^ 1 error 

下面的完整例外:

groovy.lang.MissingPropertyException: No such property: build for class: Script1
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)
    at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:231)
    at Script1.run(Script1.groovy:4)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:580)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:618)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:589)
    at hudson.util.RemotingDiagnostics$Script.call(RemotingDiagnostics.java:150)
    at hudson.util.RemotingDiagnostics$Script.call(RemotingDiagnostics.java:122)
    at hudson.remoting.LocalChannel.call(LocalChannel.java:45)
    at hudson.util.RemotingDiagnostics.executeGroovy(RemotingDiagnostics.java:119)
    at jenkins.model.Jenkins._doScript(Jenkins.java:3400)
    at jenkins.model.Jenkins.doScript(Jenkins.java:3377)
    at sun.reflect.GeneratedMethodAccessor344.invoke(Unknown Source)
于 2014-01-20T16:38:58.983 回答