Email Ext Jenkins插件中的动态收件人列表

时间:2014-01-19 22:37:04

标签: email jenkins continuous-integration continuous-deployment email-ext

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

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

  • 有没有办法设置一个环境变量,以便可以修改它,收件人列表将使用该环境变量。

  • 我知道有一个解决方案可以在预发送脚本中以编程方式设置Jenkins Email-ext插件的收件人。How To set programmatically recipients of jenkins email ext plugin。但是对于我的情况,该解决方案存在一些困难,因为我需要读取包含电子邮件列表的文件。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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参考:

参考收件人列表中的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)

答案 2 :(得分: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

时,在项目收件人列表中使用此var