Динамический список получателей в плагине Email Ext Jenkins

Я использую плагин Email Ext Jenkins, и он работает достаточно хорошо.

Теперь мне нужно динамически установить список получателей. В основном для каждой сборки я получаю список получателей электронной почты в файле, и мне нужно использовать этот список. Мой вопрос:

  • Есть ли способ установить переменную среды, чтобы ее можно было изменить, и список получателей получит эту переменную среды.

  • Я знаю, что есть решение для программной установки получателей плагина Jenkins Email-ext в сценарии предварительной отправки. of-jenkins-email-ext-plugin">Как программно установить получателей плагина jenkins email ext. Однако в моем случае с этим решением возникают некоторые трудности, так как мне нужно прочитать файл, содержащий список электронных писем.


person Exploring    schedule 19.01.2014    source источник


Ответы (3)


Если формат файла разделен запятыми или пробелами, вы можете просто использовать токен FILE (см. ссылку на токен содержимого в плагине). Это должно поместить содержимое файла в список получателей.

person slide    schedule 23.02.2014

Я не могу проверить это прямо сейчас, поэтому я не могу вспомнить, доступен ли apache commons.

Создайте файл с именем получатели.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)
person Josh Unger    schedule 20.01.2014
comment
Спасибо, Джош. Даю мне: org.codehaus.groovy.control.MultipleCompilationErrorsException: сбой при запуске, org.codehaus.groovy.control.MultipleCompilationErrorsException: сбой при запуске - person Exploring; 20.01.2014
comment
@Baishakh, у тебя есть полное исключение? Попробуйте использовать этот код в консоли jenkins, чтобы отследить исключение. вечером могу посмотреть. - person Josh Unger; 20.01.2014
comment
Спасибо, Джош. Добавление исключения. - person Exploring; 20.01.2014
comment
@Baishakh, можешь попробовать без ‹% и %›? - person Josh Unger; 21.01.2014
comment
:Я не знаю. Но похоже, что у него нет доступа к build.workspace. Нужно ли мне что-то импортировать? - person Exploring; 21.01.2014

Вы можете использовать подключаемый модуль переменных среды Inject (https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin) и создать переменную во время выполнения, или переменные среды сборки Propagate (https://wiki.jenkins-ci.org/display/JENKINS/Build+Env+Propagator+Plugin), чтобы изменить существующий, и затем вы можете использовать эту переменную в списке получателей проекта, когда используете редактируемое уведомление по электронной почте (https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin)

person kazerm    schedule 13.02.2015