Быстрое тестирование шаблонов Jelly в email-ext от Jenkins

Адрес электронной почты Jenkins позволяет вам написать шаблон электронной почты Jelly. Как вы пишете и тестируете один, не вызывая сборку каждый раз? По сути, я ищу 1-секундную итерацию, где я могу изменить скрипт Jelly, нажать "Обновить" в браузере, и он автоматически отобразит шаблон на основе проекта с жестким кодом и результата сборки.

2 ответа

В более поздних версиях плагина теперь есть возможность тестировать шаблоны по сравнению со сборками. Когда вы находитесь на экране задания, слева должна быть ссылка "Тестирование шаблона электронной почты". Это позволит вам выбрать сборку для повторного тестирования и сразу же отобразит шаблон.

Откройте консоль сценариев Jenkins по адресу _http://server/script/ (в Stackru возникают проблемы при сохранении изменений, когда это фактический URL).

Введите следующий код и замените your-project-name с названием вашего проекта и me@me.com с вашим адресом электронной почты:

import hudson.model.StreamBuildListener
import hudson.plugins.emailext.ExtendedEmailPublisher
import java.io.ByteArrayOutputStream

def projectName = "your-project-name"
def project = Jenkins.instance.getItem(projectName)

try
{

  def testing = Jenkins.instance.copy(project, "$projectName-Testing")
  def build = project.lastUnsuccessfulBuild
// see the <a href="http://javadoc.jenkins-ci.org/hudson/model/Job.html#getLastBuild()" title="Job" target="_blank">javadoc for the Job class</a> for other ways to get builds

def baos = new ByteArrayOutputStream()
def listener = new StreamBuildListener(baos)

testing.publishersList.each() { p ->
  println(p)
  if(p instanceof ExtendedEmailPublisher) {
    // modify the properties as necessary here
    p.recipientList = 'me@me.com' // set the recipient list while testing

    // run the publisher
    p.perform((AbstractBuild<?,?>)build, null, listener)
    // print out the build log from ExtendedEmailPublisher
    println(new String( baos.toByteArray(), "UTF-8" ))
  }
}

}
finally
{
    if (testing != null)
    {
        testing.delete()
    }
}

ИСТОЧНИК: https://earl-of-code.com/2013/02/prototyping-and-testing-groovy-email-templates/

Существует также проблема, которая позволяет сделать это проще:

JENKINS-9594 - Должен быть в состоянии отправить тестовое электронное письмо на основе предыдущей сборки

Другие вопросы по тегам