$lang['tuto'] = "opplæringsprogrammer"; ?>$lang['tuto'] = "opplæringsprogrammer"; ?>$lang['tuto'] = "opplæringsprogrammer"; ?> Veiledning: Send omfangsrapportdata via e-post i Jenkins

Veiledning: Send omfangsrapportdata via e-post i Jenkins

Veiledning: Send omfangsrapportdata via e-post i Jenkins
Veiledning: Send omfangsrapportdata via e-post i Jenkins

Oversikt over integrering av omfangsrapportering

Integrering av omfangsrapportering med Jenkins for automatiserte Java-prosjekter forbedrer synligheten av testresultater, avgjørende for kontinuerlige integreringsmiljøer. Dette oppsettet inkluderer vanligvis TestNG, Maven og Extent Reporter, administrert gjennom SureFire, som gir mulighet for nattlig bygg og detaljert rapportering.

En vanlig utfordring er imidlertid å trekke ut spesifikke data som testantall og bestått/ikke bestått-forhold fra Extent Reporter HTML-dashbordet for inkludering i Jenkins e-postvarsler. Dette krever et skript eller en metode for å analysere disse detaljene effektivt fra HTML-innholdet for automatisert spredning.

Kommando Beskrivelse
groovy.json.JsonSlurper Brukes i Groovy for å analysere JSON-formaterte data, noe som letter datahåndtering fra JSON-filer eller svar.
new URL().text Oppretter et nytt URL-objekt og henter innholdet som tekst, vanligvis brukt til å lese data direkte fra nettressurser.
jenkins.model.Jenkins.instance Singleton-mønster for å få tilgang til den gjeldende kjørende forekomsten av Jenkins, som tillater manipulering av jobbkonfigurasjoner og -innstillinger.
Thread.currentThread().executable Brukes i Jenkins scripted pipeline for å få en referanse til den gjeldende versjonen eller jobben, ofte for dynamisk håndtering.
hudson.util.RemotingDiagnostics Tillater kjøring av Groovy-skript på eksterne Jenkins-noder, primært brukt til diagnostiske formål i skript.
Transport.send(message) En del av JavaMail API brukes til å sende en e-postmelding utarbeidet i skriptet, avgjørende for varslingssystemer.

Skriptimplementeringsforklaring

Skriptene som tilbys er utformet for å automatisere utvinningen av testdata fra Extent Reports i Jenkins og sende disse dataene via e-post som en del av en kontinuerlig integrasjonstilbakemeldingssløyfe. Den første viktige kommandoen er groovy.json.JsonSlurper, som er avgjørende for å analysere JSON-data i Jenkins-miljøet. Dette lar skriptet håndtere JSON-svar eller filer effektivt, avgjørende for å trekke ut testresultatene formatert i JSON fra Extent Reports. En annen nøkkelkommando som brukes er new URL().text, som får tilgang til HTML-rapporten for omfangsrapporter som er vert på Jenkins. Denne kommandoen henter HTML-innholdet som ren tekst, og gjør det mulig for skriptet å skrape nødvendige data som totale tester, beståtte og mislykkede tester.

Utvinningen av data administreres videre ved å bruke regulære uttrykk for å finne spesifikke mønstre i HTML-teksten, identifisere tallene knyttet til totalt, bestått og mislykket test. De jenkins.model.Jenkins.instance kommandoen brukes deretter til å referere til gjeldende Jenkins-forekomst, som er nødvendig for å hente ulike jobbdetaljer og konfigurere innstillinger programmatisk. Etter datautvinning, bruker skriptet Transport.send(message) fra JavaMail API for å sende den konstruerte e-posten. Denne kommandoen er avgjørende for å sende e-postvarsler med de utpakkede testresultatene, for å sikre at interessenter oppdateres med de siste testresultatene direkte via e-post, og dermed forbedre kommunikasjonen og responstidene i utviklingssykluser.

Trekke ut data fra omfangsrapporter i Jenkins

Java og Groovy Scripting for 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 for å forbedre e-postvarsler i Jenkins

Bruke Groovy i Jenkins Post-Build Actions

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)

Forbedringer i automatisert rapportering gjennom Jenkins

Implementering av automatisert datautvinning og e-postvarsler i Jenkins ved hjelp av Extent Reports optimaliserer den kontinuerlige integrasjonsprosessen (CI) betydelig. Denne metodikken sikrer ikke bare rettidige oppdateringer, men letter også proaktiv problemløsning ved å gi interessenter umiddelbare testresultater. Prosessen utnytter Jenkins' evner til å planlegge og kjøre automatiserte tester over natten, som deretter analyseres for å trekke ut nøkkelberegninger som totalt antall tester, beståtte og feil direkte fra HTML-rapportene generert av Extent Reporter.

Denne automatiserte utvinningen og rapporteringen effektiviserer tilbakemeldingsmekanismen som er avgjørende for smidige utviklingsmiljøer. Ved å integrere Extent Reports med Jenkins, kan team bedre administrere testresultater og opprettholde høye standarder for kodekvalitet gjennom kontinuerlig overvåking og evaluering. Disse operasjonene er avgjørende for å opprettholde en effektiv utviklingspipeline og for å sikre at alle teammedlemmer er på linje med de siste testresultatene og prosjektstatusene.

Vanlige spørsmål om Jenkins Reporting Integration

  1. Hvordan konfigurerer jeg Jenkins til å sende en e-post etter en build?
  2. Du kan konfigurere dette i post-build-handlingene til jobbkonfigurasjonen din, ved å bruke alternativet E-postvarsling.
  3. Hva er omfangsrapporter i sammenheng med Jenkins?
  4. Extent Reports er et åpen kildekode-rapporteringsverktøy som gir interaktive og detaljerte rapporter om automatiserte tester, enkelt integrert i Jenkins pipelines.
  5. Kan Jenkins integreres med andre rapporteringsverktøy i tillegg til Extent Reports?
  6. Ja, Jenkins støtter integrasjon med flere andre rapporteringsverktøy som JUnit, TestNG og mer, ved å bruke respektive plugins.
  7. Hvordan trekker jeg ut testdata fra en HTML-rapport i Jenkins?
  8. Du bruker vanligvis Groovy- eller Python-skripting i Jenkins for å analysere HTML-innhold og trekke ut nødvendige data.
  9. Hva er fordelene med automatiserte e-postvarsler i Jenkins?
  10. Automatiserte e-poster gir umiddelbar tilbakemelding om bygge- og teststatuser, og hjelper teamene med å løse problemer raskere og opprettholde kontinuerlige distribusjonsarbeidsflyter.

Siste tanker om automatisert Jenkins-rapportering

Automatisering av utvinning av testverdier fra Extent Reports og integrering av disse i Jenkins e-postvarsler forbedrer overvåkingsmulighetene i en CI-pipeline betydelig. Denne tilnærmingen lar teamene motta rettidige oppdateringer om testresultater, og fremmer raske handlinger for å fikse feil og forbedre koden. Den strømlinjeformede prosessen sparer ikke bare tid, men optimerer også ressursallokeringen ved å sikre at alle interessenter raskt blir informert om statusen til de nattlige byggene, og opprettholder dermed en kontinuerlig loop av tilbakemeldinger og utvikling.