Огляд інтеграції звітів про обсяги
Інтеграція Extent Reporting з 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 | Використовується в сценарному конвеєрі Дженкінса, щоб отримати посилання на поточну збірку або завдання, часто для динамічної обробки. |
| hudson.util.RemotingDiagnostics | Дозволяє виконувати сценарії Groovy на віддалених вузлах Jenkins, які в основному використовуються для діагностичних цілей у сценаріях. |
| Transport.send(message) | Частина API JavaMail, яка використовується для надсилання повідомлень електронної пошти, підготовлених у сценарії, необхідних для систем сповіщень. |
Пояснення щодо реалізації сценарію
Надані сценарії призначені для автоматизації вилучення даних тестування з Extent Reports у Jenkins і надсилання цих даних електронною поштою як частина безперервного циклу зворотного зв’язку інтеграції. Перша важлива команда , який є важливим для аналізу даних JSON у середовищі Jenkins. Це дозволяє сценарію ефективно обробляти JSON-відповіді або файли, що має вирішальне значення для отримання результатів тестування, відформатованих у JSON, із Extent Reports. Використовується ще одна ключова команда , який отримує доступ до HTML-звіту Extent Reports, розміщеного на Jenkins. Ця команда отримує HTML-вміст як звичайний текст, дозволяючи сценарію очищати необхідні дані, наприклад загальну кількість тестів, пройдені та невдалі тести.
Додаткове керування витягом даних здійснюється за допомогою регулярних виразів для пошуку певних шаблонів у тексті HTML, ідентифікації чисел, пов’язаних із загальною кількістю, пройденими та невдалими тестами. The Потім команда використовується для посилання на поточний екземпляр Jenkins, який необхідний для отримання різних деталей завдання та програмного налаштування параметрів. Пост вилучення даних, сценарій використовує з JavaMail API, щоб надіслати створений електронний лист. Ця команда має вирішальне значення для надсилання сповіщень електронною поштою з витягнутими результатами тестування, гарантуючи, що зацікавлені сторони отримають останні результати тестування безпосередньо електронною поштою, таким чином покращуючи зв’язок і час відповіді в циклах розробки.
Отримання даних зі звітів про розміри в Jenkins
Java і Groovy Scripting для Jenkins Pipelines
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 у діях Дженкінса після створення
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). Ця методологія не тільки забезпечує своєчасне оновлення, але й сприяє проактивному вирішенню проблем, надаючи зацікавленим сторонам негайні результати тестування. Цей процес використовує можливості Дженкінса для планування та запуску автоматизованих тестів протягом ночі, які потім аналізуються для отримання ключових показників, таких як загальна кількість тестів, проходжень і невдач, безпосередньо зі звітів HTML, створених Extent Reporter.
Це автоматизоване вилучення та звітування оптимізують механізм зворотного зв’язку, який є необхідним для гнучких середовищ розробки. Завдяки інтеграції Extent Reports із Jenkins команди можуть краще керувати результатами тестування та підтримувати високі стандарти якості коду шляхом постійного моніторингу та оцінювання. Ці операції мають вирішальне значення для підтримки ефективного процесу розробки та забезпечення узгодженості всіх членів команди з останніми результатами тестування та статусами проекту.
- Як налаштувати Jenkins для надсилання електронного листа після збірки?
- Ви можете налаштувати це в діях після збірки конфігурації вашого завдання за допомогою параметра сповіщення електронною поштою.
- Що таке Extent Reports у контексті Jenkins?
- Extent Reports — це інструмент звітування з відкритим вихідним кодом, який надає інтерактивні та детальні звіти про автоматизовані тести, легко інтегровані в конвеєри Jenkins.
- Чи можна Jenkins інтегрувати з іншими інструментами звітування, окрім Extent Reports?
- Так, Jenkins підтримує інтеграцію з декількома іншими інструментами звітності, такими як JUnit, TestNG тощо, за допомогою відповідних плагінів.
- Як отримати тестові дані зі звіту HTML у Jenkins?
- Ви зазвичай використовуєте сценарії Groovy або Python у Jenkins для аналізу вмісту HTML і вилучення необхідних даних.
- Які переваги автоматичних сповіщень електронною поштою в Jenkins?
- Автоматичні електронні листи надають негайний зворотний зв’язок щодо статусів збірки та тестування, допомагаючи командам швидше вирішувати проблеми та підтримувати безперервні робочі процеси розгортання.
Автоматизація вилучення тестових показників зі звітів про обсяги та інтеграція їх у сповіщення електронною поштою Jenkins значно розширює можливості моніторингу в конвеєрі CI. Такий підхід дозволяє командам своєчасно отримувати оновлення про результати тестування, сприяючи швидким діям щодо виправлення помилок і вдосконалення коду. Спрощений процес не тільки економить час, але й оптимізує розподіл ресурсів, забезпечуючи оперативне інформування всіх зацікавлених сторін про статус нічних збірок, таким чином зберігаючи безперервний цикл зворотного зв’язку та розвитку.