$lang['tuto'] = "návody"; ?>$lang['tuto'] = "návody"; ?>$lang['tuto'] = "návody"; ?> Sprievodca: Pošlite údaje zo správy o rozsahu

Sprievodca: Pošlite údaje zo správy o rozsahu prostredníctvom e-mailu v Jenkins

Sprievodca: Pošlite údaje zo správy o rozsahu prostredníctvom e-mailu v Jenkins
Sprievodca: Pošlite údaje zo správy o rozsahu prostredníctvom e-mailu v Jenkins

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.RemotingDiagnostics
import groovy.json.JsonSlurper
def extractData() {
    def build = Thread.currentThread().executable
    def reportUrl = "${build.getProject().url}${build.number}/HTML_20Report/index.html"
    def jenkinsConsole = new URL(reportUrl).text
    def matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Total Tests:\\s*</span>(\\d+)</br>"
    def totalTests = matcher ? Integer.parseInt(matcher[0][1]) : 0
    matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Passed Tests:\\s*</span>(\\d+)</br>"
    def passedTests = matcher ? Integer.parseInt(matcher[0][1]) : 0
    matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Failed Tests:\\s*</span>(\\d+)</br>"
    def failedTests = matcher ? Integer.parseInt(matcher[0][1]) : 0
    return [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.JsonSlurper
import jenkins.model.Jenkins
import javax.mail.Message
import javax.mail.Transport
import javax.mail.internet.InternetAddress
import javax.mail.internet.MimeMessage
def fetchReportData() {
    def job = Jenkins.instance.getItemByFullName("YourJobName")
    def lastBuild = job.lastBuild
    def reportUrl = "${lastBuild.url}HTML_20Report/index.html"
    new URL(reportUrl).withReader { reader ->
        def data = reader.text
        def 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

  1. Ako nakonfigurujem Jenkinsa na odoslanie e-mailu po zostavení?
  2. Môžete to nakonfigurovať v akciách po zostavení konfigurácie vašej úlohy pomocou možnosti Upozornenia e-mailom.
  3. Čo sú správy o rozsahu v kontexte Jenkins?
  4. 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.
  5. Môže sa Jenkins integrovať s inými nástrojmi na vytváranie prehľadov okrem prehľadov rozsahu?
  6. Á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.
  7. Ako získam testovacie údaje zo správy HTML v Jenkins?
  8. Skriptovanie Groovy alebo Python v rámci Jenkins zvyčajne používate na analýzu obsahu HTML a extrahovanie požadovaných údajov.
  9. Aké sú výhody automatických e-mailových upozornení v Jenkins?
  10. 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.