Überblick über die Extent Reporting-Integration
Die Integration von Extent Reporting mit Jenkins für automatisierte Java-Projekte verbessert die Sichtbarkeit von Testergebnissen, was für kontinuierliche Integrationsumgebungen von entscheidender Bedeutung ist. Dieses Setup umfasst normalerweise TestNG, Maven und Extent Reporter, verwaltet über SureFire, was nächtliche Builds und detaillierte Berichte ermöglicht.
Eine häufige Herausforderung besteht jedoch darin, bestimmte Daten wie Testanzahlen und Pass/Fail-Verhältnisse aus dem HTML-Dashboard von Extent Reporter zu extrahieren, um sie in Jenkins-E-Mail-Benachrichtigungen aufzunehmen. Hierzu ist ein Skript oder eine Methode erforderlich, um diese Details effektiv aus dem HTML-Inhalt für die automatisierte Verbreitung zu analysieren.
| Befehl | Beschreibung |
|---|---|
| groovy.json.JsonSlurper | Wird in Groovy zum Parsen von JSON-formatierten Daten verwendet und erleichtert so die Datenverarbeitung aus JSON-Dateien oder -Antworten. |
| new URL().text | Erstellt ein neues URL-Objekt und ruft den Inhalt als Text ab, der üblicherweise zum direkten Lesen von Daten aus Webressourcen verwendet wird. |
| jenkins.model.Jenkins.instance | Singleton-Muster für den Zugriff auf die aktuell laufende Instanz von Jenkins, was die Manipulation von Jobkonfigurationen und -einstellungen ermöglicht. |
| Thread.currentThread().executable | Wird in der Jenkins-Skriptpipeline verwendet, um einen Verweis auf den aktuell ausgeführten Build oder Job abzurufen, häufig für die dynamische Verarbeitung. |
| hudson.util.RemotingDiagnostics | Ermöglicht die Ausführung von Groovy-Skripten auf Remote-Jenkins-Knoten, die hauptsächlich für Diagnosezwecke innerhalb von Skripten verwendet werden. |
| Transport.send(message) | Teil der JavaMail-API, der zum Senden einer im Skript vorbereiteten E-Mail-Nachricht verwendet wird und für Benachrichtigungssysteme unerlässlich ist. |
Erläuterung der Skriptimplementierung
Die bereitgestellten Skripte sollen die Extraktion von Testdaten aus Extent Reports in Jenkins automatisieren und diese Daten im Rahmen einer kontinuierlichen Integrations-Feedbackschleife per E-Mail versenden. Der erste wichtige Befehl ist , was für das Parsen von JSON-Daten in der Jenkins-Umgebung unerlässlich ist. Dadurch kann das Skript JSON-Antworten oder -Dateien effizient verarbeiten, was für das Extrahieren der in JSON formatierten Testergebnisse aus Extent Reports von entscheidender Bedeutung ist. Ein weiterer verwendeter Schlüsselbefehl ist , der auf den HTML-Bericht von Extent Reports zugreift, der auf Jenkins gehostet wird. Dieser Befehl ruft den HTML-Inhalt als einfachen Text ab und ermöglicht es dem Skript, benötigte Daten wie Gesamttests, bestandene und fehlgeschlagene Tests zu extrahieren.
Die Datenextraktion wird weiter verwaltet, indem reguläre Ausdrücke verwendet werden, um bestimmte Muster im HTML-Text zu finden und die Zahlen zu identifizieren, die mit Gesamttests, bestandenen Tests und nicht bestandenen Tests verknüpft sind. Der Der Befehl wird dann verwendet, um auf die aktuelle Jenkins-Instanz zu verweisen. Dies ist erforderlich, um verschiedene Auftragsdetails abzurufen und Einstellungen programmgesteuert zu konfigurieren. Nach der Datenextraktion verwendet das Skript von der JavaMail-API, um die erstellte E-Mail zu senden. Dieser Befehl ist für das Versenden von E-Mail-Benachrichtigungen mit den extrahierten Testergebnissen von entscheidender Bedeutung und stellt sicher, dass Stakeholder direkt per E-Mail über die neuesten Testergebnisse informiert werden, wodurch die Kommunikations- und Reaktionszeiten in Entwicklungszyklen verbessert werden.
Extrahieren von Daten aus Extent-Berichten in Jenkins
Java und Groovy Scripting für 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)
Skript zur Verbesserung von E-Mail-Benachrichtigungen in Jenkins
Verwendung von Groovy in Jenkins-Post-Build-Aktionen
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)
Verbesserungen im automatisierten Reporting durch Jenkins
Durch die Implementierung automatisierter Datenextraktion und E-Mail-Benachrichtigungen in Jenkins mithilfe von Extent Reports wird der kontinuierliche Integrationsprozess (CI) erheblich optimiert. Diese Methodik gewährleistet nicht nur zeitnahe Aktualisierungen, sondern erleichtert auch die proaktive Problemlösung, indem sie den Beteiligten sofortige Testergebnisse liefert. Der Prozess nutzt die Fähigkeiten von Jenkins, automatisierte Tests über Nacht zu planen und auszuführen, die dann analysiert werden, um wichtige Kennzahlen wie die Gesamtzahl der Tests, bestandenen Tests und Fehler direkt aus den von Extent Reporter generierten HTML-Berichten zu extrahieren.
Diese automatisierte Extraktion und Berichterstellung rationalisiert den Feedback-Mechanismus, der für agile Entwicklungsumgebungen unerlässlich ist. Durch die Integration von Extent Reports mit Jenkins können Teams Testergebnisse besser verwalten und durch kontinuierliche Überwachung und Bewertung hohe Standards der Codequalität aufrechterhalten. Diese Vorgänge sind von entscheidender Bedeutung, um eine effiziente Entwicklungspipeline aufrechtzuerhalten und sicherzustellen, dass alle Teammitglieder über die neuesten Testergebnisse und Projektstatus informiert sind.
- Wie konfiguriere ich Jenkins so, dass nach einem Build eine E-Mail gesendet wird?
- Sie können dies in den Post-Build-Aktionen Ihrer Jobkonfiguration mithilfe der Option „E-Mail-Benachrichtigung“ konfigurieren.
- Was sind Extent Reports im Kontext von Jenkins?
- Extent Reports ist ein Open-Source-Berichtstool, das interaktive und detaillierte Berichte zu automatisierten Tests bereitstellt und einfach in Jenkins-Pipelines integriert werden kann.
- Kann Jenkins neben Extent Reports auch andere Reporting-Tools integrieren?
- Ja, Jenkins unterstützt die Integration mit mehreren anderen Reporting-Tools wie JUnit, TestNG und mehr über entsprechende Plugins.
- Wie extrahiere ich Testdaten aus einem HTML-Bericht in Jenkins?
- Normalerweise verwenden Sie Groovy- oder Python-Skripte innerhalb von Jenkins, um HTML-Inhalte zu analysieren und erforderliche Daten zu extrahieren.
- Welche Vorteile bieten automatisierte E-Mail-Benachrichtigungen in Jenkins?
- Automatisierte E-Mails geben sofortiges Feedback zum Build- und Teststatus und helfen Teams, Probleme schneller zu lösen und kontinuierliche Bereitstellungsworkflows aufrechtzuerhalten.
Durch die Automatisierung der Extraktion von Testmetriken aus Extent Reports und deren Integration in Jenkins-E-Mail-Benachrichtigungen werden die Überwachungsfunktionen innerhalb einer CI-Pipeline erheblich verbessert. Dieser Ansatz ermöglicht es Teams, zeitnahe Updates über Testergebnisse zu erhalten, was schnelle Maßnahmen zur Behebung von Fehlern und zur Verbesserung des Codes fördert. Der optimierte Prozess spart nicht nur Zeit, sondern optimiert auch die Ressourcenzuweisung, indem er sicherstellt, dass alle Beteiligten umgehend über den Status der nächtlichen Builds informiert werden, wodurch eine kontinuierliche Feedback- und Entwicklungsschleife aufrechterhalten wird.