Как вызывать шаблоны groovy в плагине Jenkins email-ext

Я хочу использовать функцию сценариев Groovy в плагине email-ext для Jenkins, но я новичок в этом, и, похоже, у меня много предполагаемых знаний. Например, как кто-то вызывает один из этих шаблонов в первую очередь.

Ответ на этот вопрос, вероятно, совершенно очевиден, но я чувствую себя немного потерянным и был бы признателен, если бы меня указали в правильном направлении.


person Sparky    schedule 23.06.2015    source источник


Ответы (3)


Этот пример основан на официальной документации по электронной почте, которая к сожалению, не содержит конкретных примеров использования $SCRIPT строки кода в Pipeline. Если вы хотите использовать HTML-шаблон в качестве тела письма, вам необходимо:

  1. Создайте файл шаблона с именем my-email.template или как вам угодно — вы можете найти несколько примеров шаблонов здесь

    <body>
      <h3>Using "build" environment variables:</h3>
      <p>
        <a href="<%= build.absoluteUrl %>"><%= build.fullDisplayName %></a>
      </p>
      <h3>List of all available "build" environment variables:</h3>
      <div>
        <% println build.properties.collect{it}.join('<br />') %>
      </div>
    </body>
    
  2. Попросите администратора Jenkins поместить файл my-email.template в каталог $JENKINS_HOME\email-templates на компьютере с Jenkins. Убедитесь, что пользователь jenkins владеет этим каталогом, а также его содержимым (т. е. файлами шаблонов).

  3. В Pipeline загрузите my-email.template как содержимое тела:

    stage('Send email') {
        def mailRecipients = "[email protected]"
        def jobName = currentBuild.fullDisplayName
    
        emailext body: '''${SCRIPT, template="my-email.template"}''',
        subject: "[Jenkins] ${jobName}",
        to: "${mailRecipients}",
        replyTo: "${mailRecipients}",
        recipientProviders: [[$class: 'CulpritsRecipientProvider']]
    }
    
person Goran Vasic    schedule 18.02.2017
comment
Я знаю, что это старый пост, но я пытаюсь сделать то же самое (отправлять отчеты cppcheck по электронной почте), и я нашел этот шаблон, который хотел попробовать, я просто создал файл.шаблон в $JENKINS_HOME\email-templates, а затем добавил такой этап в свой конвейер. emailext( mimeType: 'text/html', body: '${SCRIPT, template="my_email.template"}', subject: "[Jenkins] ${jobName}", to: "${mailRecipients}") но вместо получения шаблона я получаю строку ${SCRIPT, template="my_email.template"} - person Jesus Fernandez; 07.04.2021
comment
@JesusFernandez Вы пытались заключить его в 3 одинарных кавычки, как в примере выше? - person Goran Vasic; 07.04.2021
comment
да, но я только что понял, что пытаюсь отправить желейный скрипт, а не html, поэтому я думаю, что это не работает для меня (это мой первый раз, когда я использую этот плагин...) - person Jesus Fernandez; 07.04.2021
comment
как использовать условные выражения в этом, у меня это не сработало if ( "${env.MY_ENV}" == "true" ) { %> - person vgdub; 03.06.2021

Это довольно старый поток, но вот что я сделал, чтобы использовать встроенный шаблон, сделайте это

    stage('Send Email')
    {
        steps
        {
            emailext body: '${JELLY_SCRIPT,template="html"}',recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']], subject: 'Build Successful ${JOB_NAME}',mimeType: 'text/html'
        }
                
    }

В документации к плагину указано, что html-скрипт Jelly встроен, поэтому вы можете легко его использовать.

https://plugins.jenkins.io/email-ext/

person Showmik Bose    schedule 11.08.2020

Ответ на самом деле очевиден и включен в документацию по электронной почте:

${SCRIPT, template="groovy-text.template"}
person Sparky    schedule 23.06.2015
comment
Документация написана плохо, судя по количеству вопросов, которые задают люди. В вашем Jenkinsfile нет примеров использования этой строки. Простой ввод этой строки вызовет непредвиденную ошибку token: SCRIPT. Не могли бы вы привести пример использования этой строки? - person Goran Vasic; 10.02.2017
comment
Боюсь, это было много лет назад, и я даже не могу вспомнить, для какого проекта это было, но у меня есть смутные воспоминания об использовании его в поле для содержимого электронной почты, к которому вы обращаетесь через веб-интерфейс Jenkins. Извините, я не могу быть более полезным. - person Sparky; 10.02.2017