Opas: Lähetä laajuusraporttitiedot sähköpostitse Jenkinsissä

Opas: Lähetä laajuusraporttitiedot sähköpostitse Jenkinsissä
Opas: Lähetä laajuusraporttitiedot sähköpostitse Jenkinsissä

Yleiskatsaus laajuuden raportoinnin integroinnista

Extent Reportingin integrointi Jenkinsin kanssa automatisoituja Java-projekteja varten parantaa testitulosten näkyvyyttä, mikä on ratkaisevan tärkeää jatkuvan integroinnin ympäristöissä. Tämä kokoonpano sisältää tyypillisesti TestNG:n, Mavenin ja Extent Reporterin, joita hallitaan SureFiren kautta, mikä mahdollistaa öisimmät koontiversiot ja yksityiskohtaisen raportoinnin.

Yleinen haaste on kuitenkin tiettyjen tietojen, kuten testimäärien ja läpäisy-/hylätty-suhteiden poimiminen Extent Reporter HTML -hallintapaneelista Jenkinsin sähköposti-ilmoituksiin sisällytettäväksi. Tämä vaatii komentosarjan tai menetelmän, joka jäsentää nämä tiedot tehokkaasti HTML-sisällöstä automaattista levitystä varten.

Komento Kuvaus
groovy.json.JsonSlurper Käytetään Groovyssa JSON-muotoisten tietojen jäsentämiseen, mikä helpottaa tietojen käsittelyä JSON-tiedostoista tai -vastauksista.
new URL().text Luo uuden URL-objektin ja hakee sisällön tekstinä, jota käytetään yleisesti tietojen lukemiseen suoraan verkkoresursseista.
jenkins.model.Jenkins.instance Yksittäinen malli, jolla pääset nykyiseen käynnissä olevaan Jenkins-instanssiin, mikä mahdollistaa työn kokoonpanojen ja asetusten manipuloinnin.
Thread.currentThread().executable Käytetään Jenkinsin komentosarjassa viittauksen saamiseksi käynnissä olevaan koontiversioon tai työhön, usein dynaamista käsittelyä varten.
hudson.util.RemotingDiagnostics Mahdollistaa Groovy-komentosarjojen suorittamisen Jenkins-etäsolmuissa, joita käytetään ensisijaisesti skriptien diagnostiikkatarkoituksiin.
Transport.send(message) Osa JavaMail API:sta, jota käytetään skriptillä valmistetun sähköpostiviestin lähettämiseen, välttämätön ilmoitusjärjestelmille.

Komentosarjan toteutuksen selitys

Toimitetut komentosarjat on suunniteltu automatisoimaan testaustietojen poimiminen Jenkinsin laajuusraporteista ja lähettämään nämä tiedot sähköpostitse osana jatkuvaa integroinnin palautesilmukkaa. Ensimmäinen tärkeä käsky on groovy.json.JsonSlurper, joka on välttämätöntä JSON-tietojen jäsentämiseksi Jenkins-ympäristössä. Tämän ansiosta komentosarja pystyy käsittelemään JSON-vastauksia tai tiedostoja tehokkaasti, mikä on ratkaisevan tärkeää JSON-muotoon muotoiltujen testitulosten poimimisessa laajuusraporteista. Toinen käytetty näppäinkomento on new URL().text, joka käyttää Jenkinsin isännöimien laajuusraporttien HTML-raporttia. Tämä komento hakee HTML-sisällön pelkkänä tekstinä, jolloin komentosarja voi kaapata tarvittavat tiedot, kuten kokonaistestit, läpäistyt ja epäonnistuneet testit.

Tietojen poimimista hallitaan edelleen käyttämällä säännöllisiä lausekkeita, joilla etsitään tiettyjä malleja HTML-tekstistä ja tunnistetaan kokonais-, läpäissyt- ja hylättyihin testeihin liittyvät luvut. The jenkins.model.Jenkins.instance komentoa käytetään sitten viittaamaan nykyiseen Jenkins-instanssiin, joka on tarpeen erilaisten työn yksityiskohtien hakemiseen ja asetusten ohjelmointiin. Post-tietojen purkaminen, komentosarja käyttää Transport.send(message) JavaMail API:sta lähettääksesi muodostetun sähköpostin. Tämä komento on ratkaisevan tärkeä poimittujen testitulosten sähköposti-ilmoitusten lähettämisessä. Näin varmistetaan, että sidosryhmät saavat viimeisimmät testitulokset suoraan sähköpostitse, mikä parantaa viestintä- ja vastausaikoja kehitysjaksoissa.

Tietojen poimiminen laajuusraporteista Jenkinsissä

Java- ja Groovy-komentosarjat Jenkins Pipelinesille

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)

Skripti parantaa sähköposti-ilmoituksia Jenkinsissä

Hyödynnä Groovya Jenkins Post-Build Actionsissa

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)

Jenkinsin automatisoidun raportoinnin parannukset

Automaattisen tiedonpoiston ja sähköposti-ilmoitusten käyttöönotto Jenkinsissä Extent Reports -raportin avulla optimoi jatkuvan integroinnin (CI) merkittävästi. Tämä menetelmä varmistaa oikea-aikaiset päivitykset, mutta myös helpottaa ennakoivaa ongelmanratkaisua tarjoamalla sidosryhmille välittömiä testituloksia. Prosessi hyödyntää Jenkinsin kykyä ajoittaa ja suorittaa automatisoituja testejä yön yli, ja ne jäsennetään sitten tärkeimpien mittareiden, kuten testien, läpäisyn ja epäonnistumisen kokonaismäärän, poimimiseksi suoraan Extent Reporterin luomista HTML-raporteista.

Tämä automaattinen poiminta ja raportointi virtaviivaistaa ketterissä kehitysympäristöissä olennaisen palautemekanismin. Integroimalla Extent Reports -raportit Jenkinsiin, tiimit voivat hallita paremmin testituloksia ja ylläpitää korkeaa koodin laatua jatkuvan seurannan ja arvioinnin avulla. Nämä toiminnot ovat ratkaisevan tärkeitä tehokkaan kehitysprosessin ylläpitämisessä ja sen varmistamisessa, että kaikki tiimin jäsenet ovat linjassa uusimpien testaustulosten ja projektien tilan kanssa.

Yleisiä kysymyksiä Jenkinsin raportoinnin integroinnista

  1. Kuinka määritän Jenkinsin lähettämään sähköpostin koontiversion jälkeen?
  2. Voit määrittää tämän työmäärittelysi koontiversion jälkeisissä toimissa käyttämällä Sähköposti-ilmoitusvaihtoehtoa.
  3. Mikä on laajuusraportit Jenkinsin yhteydessä?
  4. Extent Reports on avoimen lähdekoodin raportointityökalu, joka tarjoaa interaktiivisia ja yksityiskohtaisia ​​raportteja automatisoiduista testeistä, jotka on helppo integroida Jenkinsin putkiin.
  5. Voiko Jenkins integroitua muihin raportointityökaluihin laajuusraporttien lisäksi?
  6. Kyllä, Jenkins tukee integraatiota useiden muiden raportointityökalujen, kuten JUnit, TestNG ja muiden kanssa, käyttämällä vastaavia laajennuksia.
  7. Kuinka saan testitiedot HTML-raportista Jenkinsissä?
  8. Käytät yleensä Groovy- tai Python-komentosarjoja Jenkinsissä HTML-sisällön jäsentämiseen ja tarvittavien tietojen poimimiseen.
  9. Mitä etuja automaattisista sähköposti-ilmoituksista on Jenkinsissä?
  10. Automaattiset sähköpostit antavat välitöntä palautetta rakennus- ja testaustiloista, mikä auttaa tiimejä käsittelemään ongelmia nopeammin ja ylläpitämään jatkuvaa käyttöönottotyönkulkua.

Viimeiset ajatukset automatisoidusta Jenkins-raportoinnista

Testitietojen poimimisen automatisointi laajuusraporteista ja niiden integroiminen Jenkinsin sähköposti-ilmoituksiin parantaa merkittävästi CI-putken valvontaominaisuuksia. Tämän lähestymistavan avulla tiimit voivat saada oikea-aikaisia ​​päivityksiä testituloksista, mikä edistää nopeita toimia virheiden korjaamiseksi ja koodin parantamiseksi. Virtaviivaistettu prosessi ei ainoastaan ​​säästä aikaa, vaan myös optimoi resurssien allokoinnin varmistamalla, että kaikki sidosryhmät saavat viipymättä tietoa iltaisin rakennettavien rakennusten tilasta, mikä ylläpitää jatkuvaa palaute- ja kehityskiertoa.