Получение шаблонов email-ext script для работы с конвейером Дженкинса

Недавно я преобразован в Jenkins 2.x, и я экспериментирую с потоком конвейера, но я не могу заставить модуль электронной почты-ext работать с шаблонами groovy script. Хотя мой стандартный поток все еще работает нормально, если я попробую следующее, я получаю сообщение об ошибке с неожиданным токеном SCRIPT

    emailext mimeType: 'text/html', replyTo: 'xxxx', subject: "${env.JOB_NAME} - Build# ${env.BUILD_NUMBER} - ${env.BUILD_STATUS}", to: 'xxxx', body: "${SCRIPT, template='regressionfailed.groovy'}"

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

Ответ 1

Нет проблем с использованием emailext в декларативном конвейере. Но ваш script не сможет получить доступ к параметру "build. Result" правильно, потому что он еще не закончен. Как в стандартном script groovy -html.template.

Изменить: на самом деле вы можете получить доступ к build.result, если вы сами вручную установили его.

Итак, лучше добавить этап в конце декларативного конвейера так:

stage('Send email') {
    def mailRecipients = "[email protected]"
    def jobName = currentBuild.fullDisplayName

    emailext body: '''${SCRIPT, template="groovy-html.template"}''',
        mimeType: 'text/html',
        subject: "[Jenkins] ${jobName}",
        to: "${mailRecipients}",
        replyTo: "${mailRecipients}",
        recipientProviders: [[$class: 'CulpritsRecipientProvider']]
}

Также обратите внимание, что если вы используете свой собственный script, вы не можете назвать его "groovy -html.template" или "groovy -text.template", потому что они по умолчанию являются emailext (поэтому файл будет даже доступ к ним). См. "Script контент" здесь.

Ответ 2

Сегодня столкнулась с той же проблемой, видимо, имея тело, определенное до того, как emailext, похоже, делает трюк:

def emailBody = '${SCRIPT, template="regressionfailed.groovy"}'
def emailSubject = "${env.JOB_NAME} - Build# ${env.BUILD_NUMBER} - ${env.BUILD_STATUS}"
emailext(mimeType: 'text/html', replyTo: 'xxxx', subject: emailSubject, to: 'xxxx', body: emailBody)

Помните, что вам может потребоваться повторить части вашего шаблона.