Отображение HTML-страницы внутри тела письма с помощью плагина Email-ext в Jenkins

Я новичок в Jenkins и хочу знать, как можно отображать HTML-отчет (а не HTML-код), созданный после успешной сборки в теле письма (а не в виде вложения).

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


person HobbitOfShire    schedule 27.02.2014    source источник


Ответы (7)


Изучите документацию по плагину. Здесь не нужно заводить.

Просто убедитесь, что для Content Type установлено значение HTML, и добавьте в тело следующее:

${FILE,path="my.html"}

Это поместит my.html содержимое в тело вашего электронного письма (расположение файла относительно рабочего пространства задания. Я использую его, и он работает хорошо.

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ: обратите внимание, что у вас должна быть версия Jenkins 1.532.1 (или выше) для поддержки этой функции с помощью плагина email-ext.

person Eldad Assis    schedule 27.02.2014
comment
Я установил содержимое в html и сделал, как упоминалось, теперь он возвращает ошибку, говорящую в теле письма, говорящую ERROR: File '/data/test.html' does not exist - person HobbitOfShire; 27.02.2014
comment
/data/test.html - это абсолютный путь от корня файловой системы (ведущая косая черта). Попробуйте только data/test.html. - person Eldad Assis; 27.02.2014
comment
Предполагается, что абсолютный путь к моему html-файлу /data/jenkins/jobs/GAMETV/htmlreports/HTML_Report/GAMETV.html, что я должен указать в качестве пути? - person HobbitOfShire; 27.02.2014
comment
В качестве первоначального теста поместите весь путь /data/jenkins/jobs/GAMETV/htmlreports/HTML_Report/GAMETV.html, чтобы увидеть, работает ли он. - person Eldad Assis; 27.02.2014
comment
Ваш Дженкинс работает как раб? Доступен ли файл пользователю, работающему с Jenkins? Расположен ли Java-процесс, запускающий экземпляр Jenkins, в той же файловой системе, что и файл? Попробуйте поместить файл в рабочую область задания и попробуйте именно это. - person Eldad Assis; 27.02.2014
comment
html-файл, который я пытаюсь показать, на самом деле является html-файлом, сгенерированным в моей последней сборке, поэтому он должен быть доступен пользователю, поскольку он сгенерирован заданием Jenkins - person HobbitOfShire; 27.02.2014
comment
Попробуйте протестировать файл, созданный вручную в рабочей области. Убедитесь, что у вас установлена ​​последняя версия плагина ... - person Eldad Assis; 27.02.2014
comment
похоже, что проблема в моей версии Jenkins, поскольку у меня есть версия ver. 1.513, а для плагина требуется 1.532.1 - person HobbitOfShire; 27.02.2014
comment
Ну что, справились? Вы обновили свой Jenkins и плагин? Если да, дайте мне знать, чтобы я мог отредактировать свой ответ, чтобы это было полезно другим. - person Eldad Assis; 01.03.2014
comment
да, мне удалось это сделать. просто упомяните, что плагину email-ext требуется как минимум версия 1.532.1 jenkins - person HobbitOfShire; 03.03.2014
comment
Я смог использовать эту функцию с Jenkins ver. 1.509.4 и Email-ext 2.35.1. Также вы можете использовать абсолютный путь и переменные среды :) - person Stoinov; 11.08.2014
comment
этот синтаксис отправляет отчет в формате html по электронной почте, но я ищу ссылку для отправки по электронной почте. кто-нибудь может мне помочь в этом? - person Nick; 17.11.2015
comment
Могу ли я как-нибудь увеличить содержимое файла в электронном письме. Это выглядит маленьким - person Mohit Arora; 24.08.2016
comment
@EldadAK ваше решение не сработало для меня. Для редактируемого типа содержимого уведомления по электронной почте, выбранного как Html, и поля содержимого по умолчанию, я дал значение для вашего ответа. Уточните пожалуйста, какой шаг я делаю не так? - person vikramvi; 05.12.2016
comment
Вы добавили ${FILE,path="my.html"} в тело письма? У вас есть ошибка? - person Eldad Assis; 05.12.2016
comment
@EldadAK Я выполнил следующие шаги, но не смог заставить его работать. $ {FILE, path = workspace / target / site / serenity / index.html} в поле Content редактируемого уведомления по электронной почте ›Триггеры› Всегда. Он показывает сообщение об ошибке ERROR: File 'workspace / target / site / serenity / index.html' не существует. Не могли бы вы поделиться снимком экрана - person vikramvi; 17.05.2017
comment
Он заработал, обновив значение Editable Email Notification ›Content Type на HTML (text / html) и значение поля Content по умолчанию на $ {FILE, path = target / site / serenity / index.html}. Не вносил никаких изменений в поля триггеров. - person vikramvi; 17.05.2017
comment
Я также работаю над тем же и могу видеть отчет в теле письма, но отображение контента некорректно, поэтому мне нужно какое-либо свойство конфигурации CSS для правильного отображения в теле письма? - person user3538483; 17.01.2019
comment
К сожалению, это не удается, когда работа прерывается. Выдает исключение Null Pointer. - person adev; 04.04.2019

Это сработало для меня с Jenkins 1.558

${FILE,path="target/failsafe-reports/emailable-report.html"}
person Karan Thakur    schedule 19.09.2014
comment
не могли бы вы добавить снимок экрана, показывающий, где добавить это значение? - person vikramvi; 17.05.2017

Помимо чтения файла с body: ${FILE,path="index.html"}, вам нужно установить правильный тип содержимого, глобально или явно для одного выполнения, с mimeType: 'text/html.

emailext subject: '$DEFAULT_SUBJECT',
                    body: '${FILE,path="index.html"}',
                    recipientProviders: [
                        [$class: 'CulpritsRecipientProvider'],
                        [$class: 'DevelopersRecipientProvider'],
                        [$class: 'RequesterRecipientProvider']
                    ], 
                    replyTo: '$DEFAULT_REPLYTO',
                    to: '$DEFAULT_RECIPIENTS',
                    mimeType: 'text/html'
person Raúl Salinas-Monteagudo    schedule 19.06.2019
comment
Я получил письмо, но CSS не отображается. Я использую dashboard.html отчета о степени - person Vidushi Shukla; 18.08.2020

Это должно быть примерно так:

Навигация:

Configure -> Editable Email Notification

Содержание по умолчанию:

${FILE,path="path/result.html"}
person Saikat    schedule 22.02.2018

Вам просто нужно назначить ссылку на переменную среды, а затем вы можете использовать эту переменную для печати в электронном письме, используя $ {ENV, var = ENV_VARIABLE}.

person Vijay Jaiswal    schedule 17.11.2015

Вы можете использовать действие сборки Editable Email Notification для отправки html содержимое как часть тела письма.

Скопируйте html-контент в Default Content и выберите Content Type как HTML (text/html), как показано на изображении ниже:  введите описание изображения здесь

person Arpit Aggarwal    schedule 08.02.2017
comment
По состоянию на 2021 год он, похоже, устарел. - person Elad Avron; 05.07.2021

Если вы используете собственный путь

У меня возникли сложности при попытке добиться этого результата, потому что мой путь динамически изменялся, и мне пришлось использовать переменную внутри переменной FILE. Итак, когда я попробовал что-либо из следующего

body: '${FILE,path=${report}}'
body: "${FILE,path=${report}}"
body: '''${FILE,path=${report}}'''

и многое другое, это не сработало. С другой стороны, я не мог прочитать файл с помощью groovy из-за ограничений Дженкинса

Мое обходное решение заключалось в том, чтобы читать html напрямую с помощью оболочки, например

html_body = sh(script: "cat ${report}", returnStdout: true).trim()

а затем просто отправьте электронное письмо

emailext replyTo: '$DEFAULT_REPLYTO',
  subject: "subject",
  to: EMAIL,
  mimeType: 'text/html',
  body: html_body

где ${report} - это путь к html-файлу, например /var/jenkins/workspace_318/report.html

person Sergey Pleshakov    schedule 06.01.2021