$lang['tuto'] = "tutorijali"; ?>$lang['tuto'] = "tutorijali"; ?>$lang['tuto'] = "tutorijali"; ?> Vodič: Pošaljite podatke izvješća o opsegu e-poštom u

Vodič: Pošaljite podatke izvješća o opsegu e-poštom u Jenkinsu

Groovy Scripting

Pregled integracije izvješća o opsegu

Integriranje Extent Reportinga s Jenkinsom za automatizirane Java projekte poboljšava vidljivost ishoda testiranja, što je ključno za kontinuirana integracijska okruženja. Ova postavka obično uključuje TestNG, Maven i Extent Reporter, kojima se upravlja putem SureFirea, što omogućuje noćne nadogradnje i detaljna izvješća.

Međutim, čest je izazov izdvajanje specifičnih podataka kao što su brojevi testova i omjeri prolaznosti/padnosti s nadzorne ploče Extent Reporter HTML za uključivanje u Jenkinsove obavijesti putem e-pošte. Ovo zahtijeva skriptu ili metodu za učinkovito analiziranje ovih detalja iz HTML sadržaja za automatizirano širenje.

Naredba Opis
groovy.json.JsonSlurper Koristi se u Groovyju za analizu JSON formatiranih podataka, olakšavajući rukovanje podacima iz JSON datoteka ili odgovora.
new URL().text Stvara novi URL objekt i dohvaća sadržaj kao tekst, koji se obično koristi za čitanje podataka izravno s web izvora.
jenkins.model.Jenkins.instance Singleton obrazac za pristup trenutno pokrenutoj instanci Jenkinsa, dopuštajući manipulaciju konfiguracijama i postavkama poslova.
Thread.currentThread().executable Koristi se u Jenkinsovom skriptiranom cjevovodu za dobivanje reference na trenutno pokrenutu izgradnju ili posao, često za dinamičko rukovanje.
hudson.util.RemotingDiagnostics Omogućuje izvršavanje Groovy skripti na udaljenim Jenkins čvorovima, primarno korištenih u dijagnostičke svrhe unutar skripti.
Transport.send(message) Dio JavaMail API-ja koji se koristi za slanje poruke e-pošte pripremljene u skripti, bitne za sustave obavijesti.

Objašnjenje implementacije skripte

Priložene skripte osmišljene su za automatiziranje ekstrakcije podataka testiranja iz izvješća o opsegu u Jenkinsu i slanje tih podataka e-poštom kao dio kontinuirane povratne sprege integracije. Prva važna naredba je , što je bitno za raščlanjivanje JSON podataka unutar Jenkins okruženja. To omogućuje skripti da učinkovito rukuje JSON odgovorima ili datotekama, što je ključno za izdvajanje rezultata testa formatiranih u JSON-u iz Extent Reports. Druga ključna naredba koja se koristi je , koji pristupa HTML izvješću Extent Reports hostiranih na Jenkinsu. Ova naredba dohvaća HTML sadržaj kao običan tekst, omogućujući skripti da struže potrebne podatke poput ukupnog broja testova, položenih i neuspješnih testova.

Ekstrakcija podataka dalje se upravlja korištenjem regularnih izraza za pronalaženje specifičnih uzoraka u HTML tekstu, identificiranje brojeva povezanih s ukupnim, položenim i neuspjelim testovima. The naredba se zatim koristi za referenciranje trenutne Jenkinsove instance, što je neophodno za dohvaćanje raznih pojedinosti o poslu i programsko konfiguriranje postavki. Post ekstrakcija podataka, skripta koristi iz JavaMail API-ja za slanje konstruirane e-pošte. Ova je naredba ključna za slanje obavijesti e-poštom s izdvojenim rezultatima testiranja, osiguravajući da dionici budu ažurirani s najnovijim rezultatima testiranja izravno putem e-pošte, čime se poboljšava komunikacija i vrijeme odgovora u razvojnim ciklusima.

Izdvajanje podataka iz izvješća o opsegu u Jenkinsu

Java i Groovy skriptiranje za Jenkinsove cjevovode

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)

Skripta za poboljšanje obavijesti putem e-pošte u Jenkinsu

Korištenje Groovyja u Jenkinsovim radnjama nakon izgradnje

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)

Poboljšanja u automatiziranom izvješćivanju putem Jenkinsa

Implementacija automatizirane ekstrakcije podataka i obavijesti e-poštom unutar Jenkinsa pomoću Extent Reports značajno optimizira proces kontinuirane integracije (CI). Ova metodologija ne samo da osigurava pravovremena ažuriranja, već također olakšava proaktivno rješavanje problema pružajući dionicima trenutne rezultate testiranja. Proces iskorištava Jenkinsove mogućnosti za planiranje i pokretanje automatiziranih testova preko noći, koji se potom analiziraju kako bi se izdvojili ključni podaci poput ukupnog broja testova, prolaza i neuspjeha izravno iz HTML izvješća koje generira Extent Reporter.

Ova automatizirana ekstrakcija i izvješćivanje pojednostavljuju mehanizam povratnih informacija koji je bitan za agilna razvojna okruženja. Integriranjem Extent Reports s Jenkinsom, timovi mogu bolje upravljati rezultatima testiranja i održavati visoke standarde kvalitete koda kontinuiranim praćenjem i evaluacijom. Ove su operacije ključne za održavanje učinkovitog razvojnog toka i osiguravanje da su svi članovi tima usklađeni s najnovijim rezultatima testiranja i statusima projekta.

  1. Kako mogu konfigurirati Jenkinsa da pošalje e-poštu nakon izgradnje?
  2. To možete konfigurirati u radnjama nakon izgradnje konfiguracije vašeg posla, koristeći opciju Obavijest e-poštom.
  3. Što su Extent Reports u kontekstu Jenkinsa?
  4. Extent Reports je alat za izvješćivanje otvorenog koda koji pruža interaktivna i detaljna izvješća o automatiziranim testovima, lako integrirana u Jenkinsove kanale.
  5. Može li se Jenkins integrirati s drugim alatima za izvješćivanje osim Extent Reports?
  6. Da, Jenkins podržava integraciju s nekoliko drugih alata za izvješćivanje kao što su JUnit, TestNG i drugi, koristeći odgovarajuće dodatke.
  7. Kako izvući testne podatke iz HTML izvješća u Jenkinsu?
  8. Obično koristite Groovy ili Python skriptiranje unutar Jenkinsa za analizu HTML sadržaja i izdvajanje potrebnih podataka.
  9. Koje su prednosti automatiziranih obavijesti e-poštom u Jenkinsu?
  10. Automatizirana e-pošta pruža trenutne povratne informacije o statusima izgradnje i testiranja, pomažući timovima da brže riješe probleme i održavaju kontinuirane tijekove rada implementacije.

Automatizirano izdvajanje testnih metrika iz Extent Reports i njihova integracija u Jenkinsove obavijesti putem e-pošte značajno poboljšava mogućnosti praćenja unutar CI cjevovoda. Ovaj pristup omogućuje timovima primanje pravovremenih ažuriranja o rezultatima testiranja, promičući brze radnje prema popravljanju grešaka i poboljšanju koda. Pojednostavljeni proces ne samo da štedi vrijeme, već i optimizira raspodjelu resursa osiguravajući da su svi dionici promptno obaviješteni o statusu noćnih izrada, čime se održava kontinuirana petlja povratnih informacija i razvoja.