$lang['tuto'] = "tutorial"; ?>$lang['tuto'] = "tutorial"; ?>$lang['tuto'] = "tutorial"; ?> Panduan: Hantar Data Laporan Tahap melalui E-mel dalam

Panduan: Hantar Data Laporan Tahap melalui E-mel dalam Jenkins

Panduan: Hantar Data Laporan Tahap melalui E-mel dalam Jenkins
Panduan: Hantar Data Laporan Tahap melalui E-mel dalam Jenkins

Gambaran Keseluruhan Penyepaduan Laporan Luas

Mengintegrasikan Pelaporan Luas dengan Jenkins untuk projek Java automatik meningkatkan keterlihatan hasil ujian, yang penting untuk persekitaran penyepaduan berterusan. Persediaan ini biasanya termasuk TestNG, Maven dan Extent Reporter, yang diuruskan melalui SureFire, membenarkan binaan setiap malam dan pelaporan terperinci.

Walau bagaimanapun, cabaran biasa ialah mengekstrak data khusus seperti kiraan ujian dan nisbah lulus/gagal daripada papan pemuka HTML Reporter Extent untuk dimasukkan dalam pemberitahuan e-mel Jenkins. Ini memerlukan skrip atau kaedah untuk menghuraikan butiran ini dengan berkesan daripada kandungan HTML untuk penyebaran automatik.

Perintah Penerangan
groovy.json.JsonSlurper Digunakan dalam Groovy untuk menghuraikan data berformat JSON, memudahkan pengendalian data daripada fail atau respons JSON.
new URL().text Mencipta objek URL baharu dan mengambil kandungan sebagai teks, yang biasa digunakan untuk membaca data terus daripada sumber web.
jenkins.model.Jenkins.instance Corak Singleton untuk mengakses contoh berjalan semasa Jenkins, membenarkan manipulasi konfigurasi dan tetapan kerja.
Thread.currentThread().executable Digunakan dalam saluran paip skrip Jenkins untuk mendapatkan rujukan kepada binaan atau kerja yang sedang dijalankan, selalunya untuk pengendalian dinamik.
hudson.util.RemotingDiagnostics Membenarkan pelaksanaan skrip Groovy pada nod Jenkins jauh, terutamanya digunakan untuk tujuan diagnostik dalam skrip.
Transport.send(message) Sebahagian daripada API JavaMail digunakan untuk menghantar mesej e-mel yang disediakan dalam skrip, penting untuk sistem pemberitahuan.

Penerangan Pelaksanaan Skrip

Skrip yang disediakan direka bentuk untuk mengautomasikan pengekstrakan data ujian daripada Extent Reports dalam Jenkins dan menghantar data ini melalui e-mel sebagai sebahagian daripada gelung maklum balas penyepaduan berterusan. Perintah penting pertama ialah groovy.json.JsonSlurper, yang penting untuk menghuraikan data JSON dalam persekitaran Jenkins. Ini membolehkan skrip mengendalikan respons atau fail JSON dengan cekap, penting untuk mengekstrak keputusan ujian yang diformatkan dalam JSON daripada Laporan Jangkaan. Satu lagi arahan utama yang digunakan ialah new URL().text, yang mengakses laporan HTML Laporan Luas yang dihoskan pada Jenkins. Perintah ini mengambil kandungan HTML sebagai teks biasa, membolehkan skrip mengikis data yang diperlukan seperti jumlah ujian, lulus dan ujian yang gagal.

Pengekstrakan data diuruskan lagi dengan menggunakan ungkapan biasa untuk mencari corak tertentu dalam teks HTML, mengenal pasti nombor yang dikaitkan dengan ujian jumlah, lulus dan gagal. The jenkins.model.Jenkins.instance arahan kemudiannya digunakan untuk merujuk contoh Jenkins semasa, yang diperlukan untuk mengambil pelbagai butiran kerja dan mengkonfigurasi tetapan secara pemrograman. Pengekstrakan data pasca, skrip menggunakan Transport.send(message) daripada API JavaMail untuk menghantar e-mel yang dibina. Perintah ini penting untuk menghantar pemberitahuan e-mel dengan keputusan ujian yang diekstrak, memastikan pihak berkepentingan dikemas kini dengan hasil ujian terkini secara terus melalui e-mel, dengan itu meningkatkan masa komunikasi dan tindak balas dalam kitaran pembangunan.

Mengekstrak Data daripada Laporan Luas dalam Jenkins

Java dan Skrip Groovy untuk 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)

Skrip untuk Meningkatkan Pemberitahuan E-mel dalam Jenkins

Menggunakan Groovy dalam Tindakan Selepas Binaan Jenkins

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)

Penambahbaikan dalam Pelaporan Automatik melalui Jenkins

Melaksanakan pengekstrakan data automatik dan pemberitahuan e-mel dalam Jenkins menggunakan Extent Reports mengoptimumkan proses integrasi berterusan (CI) dengan ketara. Metodologi ini bukan sahaja memastikan kemas kini tepat pada masanya tetapi juga memudahkan penyelesaian isu proaktif dengan menyediakan keputusan ujian segera kepada pihak berkepentingan. Proses ini memanfaatkan keupayaan Jenkins untuk menjadualkan dan menjalankan ujian automatik semalaman, yang kemudiannya dihuraikan untuk mengekstrak metrik utama seperti jumlah bilangan ujian, lulus dan kegagalan terus daripada laporan HTML yang dijana oleh Extent Reporter.

Pengekstrakan dan pelaporan automatik ini menyelaraskan mekanisme maklum balas yang penting untuk persekitaran pembangunan tangkas. Dengan menyepadukan Extent Reports dengan Jenkins, pasukan boleh mengurus hasil ujian dengan lebih baik dan mengekalkan standard kualiti kod yang tinggi melalui pemantauan dan penilaian berterusan. Operasi ini penting dalam mengekalkan saluran pembangunan yang cekap dan memastikan semua ahli pasukan sejajar dengan hasil ujian dan status projek terkini.

Soalan Lazim mengenai Penyepaduan Pelaporan Jenkins

  1. Bagaimanakah cara saya mengkonfigurasi Jenkins untuk menghantar e-mel selepas binaan?
  2. Anda boleh mengkonfigurasi ini dalam tindakan pasca bina konfigurasi kerja anda, menggunakan pilihan Pemberitahuan E-mel.
  3. Apakah itu Laporan Luas dalam konteks Jenkins?
  4. Extent Reports ialah alat pelaporan sumber terbuka yang menyediakan laporan interaktif dan terperinci tentang ujian automatik, disepadukan dengan mudah ke dalam saluran paip Jenkins.
  5. Bolehkah Jenkins berintegrasi dengan alat pelaporan lain selain Laporan Luas?
  6. Ya, Jenkins menyokong penyepaduan dengan beberapa alat pelaporan lain seperti JUnit, TestNG dan banyak lagi, menggunakan pemalam masing-masing.
  7. Bagaimanakah cara saya mengekstrak data ujian daripada laporan HTML dalam Jenkins?
  8. Anda biasanya menggunakan skrip Groovy atau Python dalam Jenkins untuk menghuraikan kandungan HTML dan mengekstrak data yang diperlukan.
  9. Apakah faedah pemberitahuan e-mel automatik dalam Jenkins?
  10. E-mel automatik memberikan maklum balas segera tentang status binaan dan ujian, membantu pasukan menangani isu dengan lebih cepat dan mengekalkan aliran kerja penggunaan berterusan.

Pemikiran Akhir tentang Pelaporan Jenkins Automatik

Mengautomatikkan pengekstrakan metrik ujian daripada Laporan Luas dan menyepadukan ini ke dalam pemberitahuan e-mel Jenkins dengan ketara meningkatkan keupayaan pemantauan dalam saluran paip CI. Pendekatan ini membolehkan pasukan menerima kemas kini tepat pada masanya tentang hasil ujian, mempromosikan tindakan pantas ke arah membetulkan kegagalan dan menambah baik kod. Proses yang diperkemas bukan sahaja menjimatkan masa tetapi juga mengoptimumkan peruntukan sumber dengan memastikan semua pihak berkepentingan dimaklumkan dengan segera tentang status binaan setiap malam, sekali gus mengekalkan gelung maklum balas dan pembangunan yang berterusan.