Обзор интеграции отчетов об объемах
Интеграция отчетов об экстенте с Jenkins для автоматизированных проектов Java повышает наглядность результатов тестирования, что крайне важно для сред непрерывной интеграции. Эта установка обычно включает TestNG, Maven и Extent Reporter, управляемые через SureFire, что позволяет создавать ночные сборки и создавать подробные отчеты.
Однако общей проблемой является извлечение конкретных данных, таких как количество тестов и соотношение «пройдено/не пройдено», из HTML-панели Extent Reporter для включения в уведомления Jenkins по электронной почте. Для этого требуется сценарий или метод для эффективного анализа этих деталей из содержимого HTML для автоматического распространения.
| Команда | Описание |
|---|---|
| groovy.json.JsonSlurper | Используется в Groovy для анализа данных в формате JSON, что упрощает обработку данных из файлов или ответов JSON. |
| new URL().text | Создает новый объект URL-адреса и извлекает содержимое в виде текста, что обычно используется для чтения данных непосредственно из веб-ресурсов. |
| jenkins.model.Jenkins.instance | Шаблон Singleton для доступа к текущему работающему экземпляру Jenkins, позволяющий манипулировать конфигурациями и настройками заданий. |
| Thread.currentThread().executable | Используется в конвейере сценариев Jenkins для получения ссылки на текущую сборку или задание, часто для динамической обработки. |
| hudson.util.RemotingDiagnostics | Позволяет выполнять сценарии Groovy на удаленных узлах Jenkins, которые в основном используются в целях диагностики внутри сценариев. |
| Transport.send(message) | Часть API JavaMail, используемая для отправки сообщения электронной почты, подготовленного в сценарии, необходимого для систем уведомлений. |
Объяснение реализации скрипта
Предоставленные сценарии предназначены для автоматизации извлечения данных тестирования из отчетов Extent Reports в Jenkins и отправки этих данных по электронной почте в рамках цикла обратной связи непрерывной интеграции. Первая важная команда: groovy.json.JsonSlurper, что необходимо для анализа данных JSON в среде Jenkins. Это позволяет сценарию эффективно обрабатывать ответы или файлы JSON, что крайне важно для извлечения результатов теста в формате JSON из отчетов об экстенте. Другая используемая ключевая команда: new URL().text, который обращается к HTML-отчету Extent Reports, размещенному в Jenkins. Эта команда извлекает содержимое HTML в виде обычного текста, позволяя сценарию собирать необходимые данные, такие как общее количество тестов, пройденные и неудавшиеся тесты.
Извлечение данных дополнительно управляется с помощью регулярных выражений для поиска определенных шаблонов в тексте HTML, определяя числа, связанные с общим количеством, пройденными и неудавшимися тестами. jenkins.model.Jenkins.instance Затем команда используется для ссылки на текущий экземпляр Jenkins, который необходим для получения различных сведений о задании и программной настройки параметров. После извлечения данных скрипт использует Transport.send(message) из API JavaMail для отправки созданного электронного письма. Эта команда имеет решающее значение для отправки уведомлений по электронной почте с извлеченными результатами тестирования, гарантируя, что заинтересованные стороны будут в курсе последних результатов тестирования непосредственно по электронной почте, тем самым увеличивая время связи и ответа в циклах разработки.
Извлечение данных из отчетов об экстентах в Jenkins
Java и Groovy-скрипты для конвейеров Jenkins
import hudson.model.*import hudson.util.RemotingDiagnosticsimport groovy.json.JsonSlurperdef extractData() {def build = Thread.currentThread().executabledef reportUrl = "${build.getProject().url}${build.number}/HTML_20Report/index.html"def jenkinsConsole = new URL(reportUrl).textdef matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Total Tests:\\s*</span>(\\d+)</br>"def totalTests = matcher ? Integer.parseInt(matcher[0][1]) : 0matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Passed Tests:\\s*</span>(\\d+)</br>"def passedTests = matcher ? Integer.parseInt(matcher[0][1]) : 0matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Failed Tests:\\s*</span>(\\d+)</br>"def failedTests = matcher ? Integer.parseInt(matcher[0][1]) : 0return [totalTests, passedTests, failedTests]}def sendEmail(testResults) {def emailExt = Jenkins.instance.getExtensionList('hudson.tasks.MailSender')[0]def emailBody = "Total Tests: ${testResults[0]}, Passed: ${testResults[1]}, Failed: ${testResults[2]}"emailExt.sendMail(emailBody, "jenkins@example.com", "Test Report Summary")}def results = extractData()sendEmail(results)
Скрипт для улучшения уведомлений по электронной почте в Jenkins
Использование Groovy в действиях Jenkins после сборки
import groovy.json.JsonSlurperimport jenkins.model.Jenkinsimport javax.mail.Messageimport javax.mail.Transportimport javax.mail.internet.InternetAddressimport javax.mail.internet.MimeMessagedef fetchReportData() {def job = Jenkins.instance.getItemByFullName("YourJobName")def lastBuild = job.lastBuilddef reportUrl = "${lastBuild.url}HTML_20Report/index.html"new URL(reportUrl).withReader { reader ->def data = reader.textdef jsonSlurper = new JsonSlurper()def object = jsonSlurper.parseText(data)return object}}def sendNotification(buildData) {def session = Jenkins.instance.getMailSession()def message = new MimeMessage(session)message.setFrom(new InternetAddress("jenkins@example.com"))message.setRecipients(Message.RecipientType.TO, "developer@example.com")message.setSubject("Automated Test Results")message.setText("Test Results: ${buildData.totalTests} Total, ${buildData.passed} Passed, ${buildData.failed} Failed.")Transport.send(message)}def reportData = fetchReportData()sendNotification(reportData)
Улучшения в автоматизированной отчетности через Jenkins
Внедрение автоматического извлечения данных и уведомлений по электронной почте в Jenkins с помощью Extent Reports значительно оптимизирует процесс непрерывной интеграции (CI). Эта методология не только обеспечивает своевременное обновление, но и способствует упреждающему решению проблем, предоставляя заинтересованным сторонам немедленные результаты испытаний. В этом процессе используются возможности Jenkins по планированию и запуску автоматических тестов в ночное время, которые затем анализируются для извлечения ключевых показателей, таких как общее количество тестов, проходов и сбоев, непосредственно из отчетов HTML, созданных Extent Reporter.
Такое автоматическое извлечение данных и создание отчетов упрощают механизм обратной связи, необходимый для сред гибкой разработки. Интегрируя отчеты об экстенте с Jenkins, команды могут лучше управлять результатами тестирования и поддерживать высокие стандарты качества кода посредством постоянного мониторинга и оценки. Эти операции имеют решающее значение для поддержания эффективного конвейера разработки и обеспечения того, чтобы все члены команды были в курсе последних результатов тестирования и статусов проектов.
Общие вопросы по интеграции отчетов Jenkins
- Как настроить Jenkins для отправки электронного письма после сборки?
- Вы можете настроить это в действиях после сборки конфигурации вашего задания, используя опцию «Уведомление по электронной почте».
- Что такое отчеты об экстенте в контексте Jenkins?
- Extent Reports — это инструмент отчетности с открытым исходным кодом, который предоставляет интерактивные и подробные отчеты об автоматических тестах, легко интегрируемые в конвейеры Jenkins.
- Может ли Jenkins интегрироваться с другими инструментами отчетности, кроме Extent Reports?
- Да, Jenkins поддерживает интеграцию с несколькими другими инструментами отчетности, такими как JUnit, TestNG и другими, с использованием соответствующих плагинов.
- Как извлечь тестовые данные из отчета HTML в Jenkins?
- Обычно вы используете сценарии Groovy или Python в Jenkins для анализа содержимого HTML и извлечения необходимых данных.
- Каковы преимущества автоматических уведомлений по электронной почте в Jenkins?
- Автоматизированные электронные письма обеспечивают немедленную обратную связь о статусах сборки и тестирования, помогая командам быстрее решать проблемы и поддерживать непрерывные рабочие процессы развертывания.
Заключительные мысли об автоматизированной отчетности Jenkins
Автоматизация извлечения показателей тестирования из отчетов об экстенте и интеграция их в уведомления по электронной почте Jenkins значительно расширяют возможности мониторинга в конвейере CI. Такой подход позволяет командам получать своевременную информацию о результатах тестирования, способствуя быстрым действиям по устранению сбоев и улучшению кода. Оптимизированный процесс не только экономит время, но и оптимизирует распределение ресурсов, обеспечивая оперативное информирование всех заинтересованных сторон о статусе ночных сборок, поддерживая таким образом непрерывный цикл обратной связи и разработки.