Rokasgrāmata: nosūtiet pārskata datus pa e-pastu Jenkinsā

Rokasgrāmata: nosūtiet pārskata datus pa e-pastu Jenkinsā
Groovy Scripting

Pārskats par apjoma pārskatu integrāciju

Integrējot Extent Reporting ar Jenkins automatizētiem Java projektiem, tiek uzlabota testa rezultātu redzamība, kas ir būtiski nepārtrauktas integrācijas vidēs. Šajā iestatījumā parasti ietilpst TestNG, Maven un Extent Reporter, kas tiek pārvaldīti, izmantojot SureFire, ļaujot veikt ikvakara būves un detalizētus pārskatus.

Tomēr bieži sastopams izaicinājums ir konkrētu datu, piemēram, testu skaita un sekmīgo/nesekmīgo attiecību iegūšana no Extent Reporter HTML informācijas paneļa, lai tos iekļautu Jenkins e-pasta paziņojumos. Tam nepieciešams skripts vai metode, lai efektīvi parsētu šo informāciju no HTML satura automātiskai izplatīšanai.

Pavēli Apraksts
groovy.json.JsonSlurper Izmanto Groovy, lai parsētu JSON formatētus datus, atvieglojot datu apstrādi no JSON failiem vai atbildēm.
new URL().text Izveido jaunu URL objektu un ienes saturu kā tekstu, ko parasti izmanto, lai nolasītu datus tieši no tīmekļa resursiem.
jenkins.model.Jenkins.instance Singleton modelis, lai piekļūtu pašreizējai Jenkins darbībai, ļaujot manipulēt ar darba konfigurācijām un iestatījumiem.
Thread.currentThread().executable Izmanto Dženkinsa skriptu konveijerā, lai iegūtu atsauci uz pašlaik darbojošos būvējumu vai darbu, bieži vien dinamiskai apstrādei.
hudson.util.RemotingDiagnostics Ļauj izpildīt Groovy skriptus attālos Jenkins mezglos, ko galvenokārt izmanto diagnostikas nolūkos skriptos.
Transport.send(message) Daļa no JavaMail API, ko izmanto, lai nosūtītu skriptā sagatavotu e-pasta ziņojumu, kas ir būtiska paziņojumu sistēmām.

Skripta ieviešanas skaidrojums

Nodrošinātie skripti ir paredzēti, lai automatizētu testēšanas datu ieguvi no Jenkins Extent Reports un nosūtītu šos datus pa e-pastu kā daļu no nepārtrauktas integrācijas atgriezeniskās saites. Pirmā svarīgā komanda ir groovy.json.JsonSlurper, kas ir būtiska JSON datu parsēšanai Jenkins vidē. Tas ļauj skriptam efektīvi apstrādāt JSON atbildes vai failus, kas ir ļoti svarīgi, lai no apjoma pārskatiem iegūtu JSON formatētos testa rezultātus. Vēl viena izmantotā atslēgas komanda ir new URL().text, kas piekļūst Jenkins mitinātajam Extent Reports HTML pārskatam. Šī komanda ienes HTML saturu kā vienkāršu tekstu, ļaujot skriptam nokasīt nepieciešamos datus, piemēram, kopējos testus, nokārtotos un nesekmīgos testus.

Datu ieguve tiek tālāk pārvaldīta, izmantojot regulāras izteiksmes, lai HTML tekstā atrastu konkrētus modeļus, identificējot skaitļus, kas saistīti ar kopējo, nokārtoto un nesekmīgo testu skaitu. The jenkins.model.Jenkins.instance Pēc tam komanda tiek izmantota, lai atsauktos uz pašreizējo Jenkins instanci, kas ir nepieciešama, lai iegūtu dažādas darba detaļas un programmatiski konfigurētu iestatījumus. Post datu ieguve, skripts izmanto Transport.send(message) no JavaMail API, lai nosūtītu izveidoto e-pastu. Šī komanda ir ļoti svarīga, lai nosūtītu e-pasta paziņojumus ar iegūtajiem testa rezultātiem, nodrošinot, ka ieinteresētās personas tiek atjauninātas ar jaunākajiem testēšanas rezultātiem tieši pa e-pastu, tādējādi uzlabojot saziņu un atbildes laiku izstrādes ciklos.

Datu iegūšana no apjoma pārskatiem Dženkinsā

Java un Groovy skriptēšana 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)

Skripts, lai uzlabotu e-pasta paziņojumus Jenkinsā

Groovy izmantošana Dženkinsa pēcbūves darbībās

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)

Uzlabojumi automatizētajā ziņošanā, izmantojot Jenkins

Automatizētas datu ieguves un e-pasta paziņojumu ieviešana pakalpojumā Jenkins, izmantojot Extent Reports, ievērojami optimizē nepārtrauktās integrācijas (CI) procesu. Šī metodoloģija ne tikai nodrošina savlaicīgus atjauninājumus, bet arī veicina proaktīvu problēmu risināšanu, nodrošinot ieinteresētajām personām tūlītējus testa rezultātus. Šajā procesā tiek izmantotas Dženkinsa iespējas ieplānot un vienas nakts laikā palaist automatizētus testus, kas pēc tam tiek parsēti, lai tieši no Extent Reporter ģenerētajiem HTML pārskatiem iegūtu galvenos rādītājus, piemēram, kopējo pārbaužu, nokārtoto un kļūmju skaitu.

Šī automatizētā iegūšana un ziņošana racionalizē atgriezeniskās saites mehānismu, kas ir būtisks elastīgai izstrādes videi. Integrējot Extent Reports ar Jenkins, komandas var labāk pārvaldīt testa rezultātus un uzturēt augstus koda kvalitātes standartus, izmantojot nepārtrauktu uzraudzību un novērtēšanu. Šīs darbības ir ļoti svarīgas, lai uzturētu efektīvu izstrādes cauruļvadu un nodrošinātu, ka visi komandas locekļi ir saskaņoti ar jaunākajiem testēšanas rezultātiem un projekta statusiem.

Bieži uzdotie jautājumi par Dženkinsa pārskatu integrāciju

  1. Kā konfigurēt Jenkins, lai pēc izveides nosūtītu e-pastu?
  2. Varat to konfigurēt darba konfigurācijas pēcveidošanas darbībās, izmantojot opciju Paziņojums pa e-pastu.
  3. Kas ir Extent Reports Dženkinsa kontekstā?
  4. Extent Reports ir atvērtā koda ziņošanas rīks, kas nodrošina interaktīvus un detalizētus pārskatus par automatizētiem testiem, kas ir viegli integrējami Jenkins konveijeros.
  5. Vai Dženkins var integrēties ar citiem ziņošanas rīkiem, ne tikai ar apjoma pārskatiem?
  6. Jā, Jenkins atbalsta integrāciju ar vairākiem citiem ziņošanas rīkiem, piemēram, JUnit, TestNG un citiem, izmantojot attiecīgos spraudņus.
  7. Kā iegūt testa datus no HTML pārskata pakalpojumā Jenkins?
  8. Jūs parasti izmantojat Groovy vai Python skriptu programmā Jenkins, lai parsētu HTML saturu un iegūtu nepieciešamos datus.
  9. Kādas ir automatizēto e-pasta paziņojumu priekšrocības pakalpojumā Jenkins?
  10. Automatizētie e-pasta ziņojumi nodrošina tūlītēju atgriezenisko saiti par izveides un testēšanas statusiem, palīdzot komandām ātrāk risināt problēmas un uzturēt nepārtrauktas izvietošanas darbplūsmas.

Pēdējās domas par automatizēto Dženkinsa ziņošanu

Testa metrikas automatizēšana no apjoma pārskatiem un to integrēšana Jenkins e-pasta paziņojumos ievērojami uzlabo uzraudzības iespējas CI konveijerā. Šī pieeja ļauj komandām saņemt savlaicīgus atjauninājumus par testa rezultātiem, veicinot ātras darbības kļūmju novēršanai un koda uzlabošanai. Vienkāršotais process ne tikai ietaupa laiku, bet arī optimizē resursu piešķiršanu, nodrošinot, ka visas ieinteresētās puses tiek nekavējoties informētas par ikvakara būvju statusu, tādējādi saglabājot nepārtrauktu atgriezenisko saiti un attīstību.