Prehľad integrácie prehľadov rozsahu
Integrácia reportovania rozsahu s Jenkins pre automatizované Java projekty zvyšuje viditeľnosť výsledkov testov, ktoré sú kľúčové pre prostredia nepretržitej integrácie. Toto nastavenie zvyčajne zahŕňa TestNG, Maven a Extent Reporter, spravované cez SureFire, čo umožňuje nočné zostavovanie a podrobné reporty.
Bežnou výzvou je však extrahovanie špecifických údajov, ako sú počty testov a pomery úspešnosť/neúspešnosť, z ovládacieho panela HTML nástroja Extent Reporter, aby sa mohli zahrnúť do e-mailových upozornení Jenkins. To si vyžaduje skript alebo metódu na efektívne analyzovanie týchto podrobností z obsahu HTML na automatizované šírenie.
| Príkaz | Popis |
|---|---|
| groovy.json.JsonSlurper | Používa sa v Groovy na analýzu údajov vo formáte JSON, čím sa uľahčuje manipulácia s údajmi zo súborov alebo odpovedí JSON. |
| new URL().text | Vytvorí nový objekt URL a načíta obsah ako text, ktorý sa bežne používa na čítanie údajov priamo z webových zdrojov. |
| jenkins.model.Jenkins.instance | Vzor Singleton na prístup k aktuálnej spustenej inštancii Jenkins, čo umožňuje manipuláciu s konfiguráciami a nastaveniami úloh. |
| Thread.currentThread().executable | Používa sa v skriptovanom potrubí Jenkins na získanie odkazu na aktuálne spustenú zostavu alebo úlohu, často na dynamické spracovanie. |
| hudson.util.RemotingDiagnostics | Umožňuje vykonávanie skriptov Groovy na vzdialených uzloch Jenkins, ktoré sa primárne používajú na diagnostické účely v rámci skriptov. |
| Transport.send(message) | Časť JavaMail API používaná na odoslanie e-mailovej správy pripravenej v skripte, ktorá je nevyhnutná pre oznamovacie systémy. |
Vysvetlenie implementácie skriptu
Poskytnuté skripty sú navrhnuté tak, aby automatizovali extrakciu testovacích údajov z Extent Reports v Jenkins a odosielali tieto údaje e-mailom ako súčasť nepretržitej integračnej spätnej väzby. Prvý dôležitý príkaz je groovy.json.JsonSlurper, čo je nevyhnutné na analýzu údajov JSON v prostredí Jenkins. To umožňuje skriptu efektívne spracovávať odpovede alebo súbory JSON, čo je rozhodujúce pre extrahovanie výsledkov testov naformátovaných v JSON z Extent Reports. Ďalším použitým kľúčovým príkazom je new URL().text, ktorý pristupuje k prehľadu HTML prehľadov rozsahu hostených na serveri Jenkins. Tento príkaz načíta obsah HTML ako obyčajný text, čo umožňuje skriptu zoškrabať potrebné údaje, ako sú celkové testy, úspešné a neúspešné testy.
Extrakcia údajov sa ďalej riadi pomocou regulárnych výrazov na nájdenie špecifických vzorov v texte HTML, identifikácie čísel spojených s celkovými, úspešnými a neúspešnými testami. The jenkins.model.Jenkins.instance príkaz sa potom použije na odkaz na aktuálnu inštanciu Jenkins, ktorá je potrebná na získanie rôznych podrobností úlohy a programovú konfiguráciu nastavení. Po extrakcii údajov skript používa Transport.send(message) z JavaMail API na odoslanie vytvoreného e-mailu. Tento príkaz je rozhodujúci pre odosielanie e-mailových upozornení s extrahovanými výsledkami testov, čím sa zabezpečí, že zainteresované strany budú aktualizované o najnovších výsledkoch testovania priamo prostredníctvom e-mailu, čím sa skráti doba komunikácie a odozvy vo vývojových cykloch.
Extrahovanie údajov zo správ o rozsahu v Jenkins
Java a Groovy Scripting pre 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 na vylepšenie e-mailových upozornení v Jenkins
Využitie Groovy v akciách Jenkins Post-Build
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)
Vylepšenia v automatizovanom vykazovaní prostredníctvom Jenkinsa
Implementácia automatizovanej extrakcie údajov a e-mailových upozornení v rámci Jenkins pomocou Extent Reports výrazne optimalizuje proces nepretržitej integrácie (CI). Táto metodika nielen zaisťuje včasné aktualizácie, ale tiež uľahčuje proaktívne riešenie problémov tým, že zainteresovaným stranám poskytuje okamžité výsledky testov. Tento proces využíva schopnosti Jenkinsa na plánovanie a spúšťanie automatických testov cez noc, ktoré sa potom analyzujú, aby sa extrahovali kľúčové metriky, ako je celkový počet testov, úspešne vykonaných testov a zlyhaní, priamo zo správ HTML generovaných aplikáciou Extent Reporter.
Táto automatizovaná extrakcia a reportovanie zefektívňuje mechanizmus spätnej väzby nevyhnutný pre agilné vývojové prostredia. Vďaka integrácii Extent Reports s Jenkins môžu tímy lepšie riadiť výsledky testov a udržiavať vysoké štandardy kvality kódu prostredníctvom neustáleho monitorovania a vyhodnocovania. Tieto operácie sú rozhodujúce pre udržanie efektívneho vývojového kanála a zabezpečenie toho, aby všetci členovia tímu boli v súlade s najnovšími výsledkami testovania a stavom projektu.
Bežné otázky o integrácii Jenkinsových správ
- Ako nakonfigurujem Jenkinsa na odoslanie e-mailu po zostavení?
- Môžete to nakonfigurovať v akciách po zostavení konfigurácie vašej úlohy pomocou možnosti Upozornenia e-mailom.
- Čo sú správy o rozsahu v kontexte Jenkins?
- Extent Reports je nástroj na vytváranie správ s otvoreným zdrojom, ktorý poskytuje interaktívne a podrobné správy o automatických testoch, ktoré sa dajú ľahko integrovať do kanálov Jenkins.
- Môže sa Jenkins integrovať s inými nástrojmi na vytváranie prehľadov okrem prehľadov rozsahu?
- Áno, Jenkins podporuje integráciu s niekoľkými ďalšími nástrojmi na vytváranie prehľadov, ako sú JUnit, TestNG a ďalšie, pomocou príslušných doplnkov.
- Ako získam testovacie údaje zo správy HTML v Jenkins?
- Skriptovanie Groovy alebo Python v rámci Jenkins zvyčajne používate na analýzu obsahu HTML a extrahovanie požadovaných údajov.
- Aké sú výhody automatických e-mailových upozornení v Jenkins?
- Automatizované e-maily poskytujú okamžitú spätnú väzbu o stave zostavy a testovania, čím pomáhajú tímom rýchlejšie riešiť problémy a udržiavať nepretržité pracovné postupy nasadenia.
Záverečné myšlienky o automatizovanom Jenkinsovom podávaní správ
Automatizácia extrakcie testovacích metrík zo správ o rozsahu a ich integrácia do e-mailových upozornení Jenkins výrazne zlepšuje možnosti monitorovania v rámci kanála CI. Tento prístup umožňuje tímom dostávať včasné aktualizácie o výsledkoch testov, podporuje rýchle opatrenia na opravu zlyhaní a zlepšenie kódu. Zjednodušený proces nielen šetrí čas, ale aj optimalizuje prideľovanie zdrojov tým, že zabezpečuje, aby boli všetky zainteresované strany okamžite informované o stave nočných stavieb, čím sa udržiava nepretržitá slučka spätnej väzby a vývoja.