Jenkins добавляет / обновляет все вакансии: должен иметь оповещения по электронной почте для списка получателей по умолчанию - PullRequest
0 голосов
/ 15 февраля 2020

у наших jenkins уже есть около 100 заданий, я хочу добавить редактируемое уведомление по электронной почте для всех заданий, чтобы все задания имели оповещения по электронной почте в списке получателей по умолчанию. Ищите Groovy Скрипт для консоли сценариев Jenkins для добавления или изменения настроек уведомлений по электронной почте.

Jenkins.instance.items.each { item ->

  println("JOB: " + item.name)

  // code for setting email notification if not exist
  if(item.XXXX == null) {
    println("No email notification step ")

  } 
   else {
    //   code to update the current email settings 
    println("Set new setting")

  }
 item.save()
 println(" done")

}

Или какой-то другой автоматизированный способ тоже подойдет. Спасибо!

1 Ответ

1 голос
/ 15 февраля 2020

Предполагается, что вы используете hudson.plugins.emailext.ExtendedEmailPublisher и все задания уже имеют добавленный шаг, вероятно, это должно охватывать часть итерации.

// Gets all jobs and folders recursively
items = Jenkins.instance.getAllItems();

items.each { item ->
   def status = ''
   def base_email = ''
   def ext_email = []
   if (item.class.name == "hudson.model.FreeStyleProject") {
      item.publishersList.findAll {it instanceof hudson.plugins.emailext.ExtendedEmailPublisher}.each { publisher ->
         status = publisher.disabled 
         base_email=publisher.recipientList?.replaceAll("\\r|\\n", " ")
         publisher.configuredTriggers?.each { entry ->
            if (entry.email.recipientList) {
                ext_email << "${entry.class.name.replace("hudson.plugins.emailext.plugins.trigger.", "")}: ${entry.email.recipientList?.replaceAll("\\r|\\n", " ")}"
            }
         }
      }
      if ( base_email ) {
            println item.fullName + "( " + status + " )"
            println "  +- " + base_email
            ext_email.each {             
               println "   - " + it
            }
      } else {
         println "# " + item.fullName
      }
   }
}
return

Если вы используете hudson.tasks.Mailer, это только одно поле: publisher.recipients

Затем вы либо

publisher.recipientList="someone@somewhere.com"
item.save()

или эквивалентный по необходимости.

Примечание: плагин Extended Email имеет переключатель для отключения отправки электронных писем "Disable Extended Email Publisher (publisher.disabled), поэтому сообщите об этом тоже.

Если вам нужно добавить плагин, то это будет что-то вроде: item.publishersList.add(new hudson.plugins.emailext.ExtendedEmailPublisher(<parameters>) ( см. Javado c)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...