Juhend: saatke Jenkinsi aruannete ulatus e-posti teel

Groovy Scripting

Ülevaade ulatuse aruandluse integreerimisest

Ulatusaruandluse integreerimine Jenkinsiga automatiseeritud Java-projektide jaoks suurendab testitulemuste nähtavust, mis on pideva integratsiooni keskkondade jaoks ülioluline. See seadistus sisaldab tavaliselt TestNG-d, Mavenit ja Extent Reporterit, mida hallatakse SureFire'i kaudu, võimaldades igaõhtuseid koostamisi ja üksikasjalikku aruandlust.

Levinud väljakutse on aga konkreetsete andmete (nt testide arvud ja läbimise/ebaõnnestumise suhted) hankimine Extent Reporteri HTML-i armatuurlaualt Jenkinsi meilimärguannetesse lisamiseks. Selleks on vaja skripti või meetodit nende üksikasjade tõhusaks sõelumiseks HTML-i sisust automaatseks levitamiseks.

Käsk Kirjeldus
groovy.json.JsonSlurper Kasutatakse Groovys JSON-vormingus andmete sõelumiseks, hõlbustades andmete töötlemist JSON-failidest või vastustest.
new URL().text Loob uue URL-i objekti ja hangib sisu tekstina, mida tavaliselt kasutatakse andmete lugemiseks otse veebiressurssidest.
jenkins.model.Jenkins.instance Singleton muster juurdepääsuks Jenkinsi praegusele töötavale eksemplarile, mis võimaldab manipuleerida töö konfiguratsioonide ja sätetega.
Thread.currentThread().executable Kasutatakse Jenkinsi skriptitud konveieris, et saada viite praegu töötavale järgule või tööle, sageli dünaamilise käsitsemise jaoks.
hudson.util.RemotingDiagnostics Võimaldab käivitada Groovy skripte Jenkinsi kaugsõlmedes, mida kasutatakse peamiselt skriptide diagnostilistel eesmärkidel.
Transport.send(message) Osa JavaMaili API-st, mida kasutatakse skriptis koostatud meilisõnumi saatmiseks, mis on teavitussüsteemide jaoks hädavajalik.

Skripti rakendamise selgitus

Pakutavad skriptid on loodud selleks, et automatiseerida Jenkinsi ulatusaruannetest testimisandmete ekstraheerimist ja saata need andmed e-posti teel pideva integratsiooni tagasisideahela osana. Esimene oluline käsk on , mis on oluline JSON-i andmete sõelumiseks Jenkinsi keskkonnas. See võimaldab skriptil JSON-i vastuseid või faile tõhusalt käsitleda, mis on ülioluline JSON-vormingus testitulemuste eraldamiseks ulatuse aruannetest. Teine kasutatud võtmekäsklus on , mis pääseb juurde Jenkinsis hostitud ulatusaruannete HTML-aruandele. See käsk tõmbab HTML-i sisu lihttekstina, võimaldades skriptil kraapida vajalikke andmeid, nagu kogutestid, läbitud ja ebaõnnestunud testid.

Andmete ekstraheerimist hallatakse lisaks regulaaravaldiste abil, et leida HTML-i tekstist konkreetseid mustreid, tuvastades kogu-, läbitud ja ebaõnnestunud testidega seotud arvud. The Seejärel kasutatakse käsku praegusele Jenkinsi eksemplarile viitamiseks, mis on vajalik erinevate töö üksikasjade toomiseks ja sätete programmiliseks konfigureerimiseks. Postandmete ekstraheerimine, skript kasutab JavaMaili API-st koostatud meili saatmiseks. See käsk on ülioluline ekstraheeritud testitulemustega meiliteatiste saatmiseks, tagades, et sidusrühmad saavad uusimate testimistulemustega otse e-posti teel, parandades seeläbi suhtlus- ja reageerimisaega arendustsüklites.

Andmete ekstraheerimine Jenkinsi ulatusaruannetest

Java ja Groovy skriptimine Jenkinsi torujuhtmete jaoks

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 Jenkinsi meilimärguannete täiustamiseks

Groovy kasutamine Jenkinsi ehitusjärgsetes toimingutes

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)

Automatiseeritud aruandluse täiustused Jenkinsi kaudu

Automatiseeritud andmete ekstraheerimise ja meilimärguannete rakendamine Jenkinsis Extent Reportsi abil optimeerib märkimisväärselt pideva integreerimise (CI) protsessi. See metoodika mitte ainult ei taga õigeaegseid värskendusi, vaid hõlbustab ka probleemide ennetavat lahendamist, pakkudes sidusrühmadele koheseid testitulemusi. Protsess kasutab Jenkinsi võimalusi automatiseeritud testide ajastamiseks ja käivitamiseks üleöö, mis seejärel sõelutakse põhimõõdikute, näiteks testide, läbimiste ja ebaõnnestumiste koguarvu eraldamiseks otse Extent Reporteri loodud HTML-aruannetest.

See automaatne ekstraheerimine ja aruandlus lihtsustavad paindlike arenduskeskkondade jaoks hädavajalikku tagasisidemehhanismi. Integreerides ulatuse aruanded Jenkinsiga, saavad meeskonnad paremini hallata testitulemusi ja säilitada pideva jälgimise ja hindamise kaudu kõrgeid koodikvaliteedi standardeid. Need toimingud on kriitilise tähtsusega tõhusa arendustorustiku säilitamiseks ja selle tagamiseks, et kõik meeskonnaliikmed oleksid vastavuses uusimate testimistulemuste ja projekti olekutega.

  1. Kuidas konfigureerida Jenkins pärast ehitamist meili saatma?
  2. Saate seda konfigureerida oma töö konfiguratsiooni järeltoimingutes, kasutades suvandit Meiliteatis.
  3. Mis on ulatuse aruanded Jenkinsi kontekstis?
  4. Extent Reports on avatud lähtekoodiga aruandlustööriist, mis pakub interaktiivseid ja üksikasjalikke aruandeid automatiseeritud testide kohta, mida on lihtne Jenkinsi konveieritesse integreerida.
  5. Kas Jenkins saab lisaks ulatusaruannetele integreerida ka muude aruandlustööriistadega?
  6. Jah, Jenkins toetab integreerimist mitmete teiste aruandlustööriistadega, nagu JUnit, TestNG ja palju muud, kasutades vastavaid pistikprogramme.
  7. Kuidas testandmeid Jenkinsi HTML-i aruandest eraldada?
  8. Tavaliselt kasutate Jenkinsis Groovy või Pythoni skripte HTML-i sisu sõelumiseks ja vajalike andmete ekstraktimiseks.
  9. Millised on Jenkinsi automatiseeritud meilimärguannete eelised?
  10. Automaatsed meilid annavad kohest tagasisidet koostamise ja testimise olekute kohta, aidates meeskondadel probleeme kiiremini lahendada ja säilitada pidevat juurutamise töövooge.

Ulatusaruannetest testmõõdikute ekstraheerimise automatiseerimine ja nende integreerimine Jenkinsi meiliteatistesse suurendab märkimisväärselt CI konveieri jälgimisvõimalusi. See lähenemisviis võimaldab meeskondadel saada õigeaegseid värskendusi testitulemuste kohta, edendades kiireid meetmeid tõrgete parandamiseks ja koodi parandamiseks. Lihtsustatud protsess mitte ainult ei säästa aega, vaid optimeerib ka ressursside jaotamist, tagades, et kõik sidusrühmad on igaõhtuste ehitiste olekust kohe teavitatud, säilitades seega pideva tagasiside ja arengu.