Ikhtisar Integrasi Pelaporan Tingkat
Mengintegrasikan Extent Reporting dengan Jenkins untuk proyek Java otomatis meningkatkan visibilitas hasil pengujian, yang penting untuk lingkungan integrasi berkelanjutan. Penyiapan ini biasanya mencakup TestNG, Maven, dan Extent Reporter, yang dikelola melalui SureFire, memungkinkan pembuatan malam hari dan pelaporan mendetail.
Namun, tantangan yang umum adalah mengekstraksi data spesifik seperti jumlah pengujian dan rasio lulus/gagal dari dasbor HTML Extent Reporter untuk disertakan dalam notifikasi email Jenkins. Hal ini memerlukan skrip atau metode untuk menguraikan rincian ini secara efektif dari konten HTML untuk penyebaran otomatis.
| Memerintah | Keterangan |
|---|---|
| groovy.json.JsonSlurper | Digunakan di Groovy untuk mengurai data berformat JSON, memfasilitasi penanganan data dari file atau respons JSON. |
| new URL().text | Membuat objek URL baru dan mengambil konten sebagai teks, biasanya digunakan untuk membaca data langsung dari sumber daya web. |
| jenkins.model.Jenkins.instance | Pola tunggal untuk mengakses instance Jenkins yang sedang berjalan, memungkinkan manipulasi konfigurasi dan pengaturan pekerjaan. |
| Thread.currentThread().executable | Digunakan dalam alur skrip Jenkins untuk mendapatkan referensi ke build atau pekerjaan yang sedang berjalan, sering kali untuk penanganan dinamis. |
| hudson.util.RemotingDiagnostics | Mengizinkan eksekusi skrip Groovy pada node Jenkins jarak jauh, terutama digunakan untuk tujuan diagnostik dalam skrip. |
| Transport.send(message) | Bagian dari JavaMail API yang digunakan untuk mengirim pesan email yang disiapkan dalam skrip, penting untuk sistem notifikasi. |
Penjelasan Implementasi Naskah
Skrip yang disediakan dirancang untuk mengotomatiskan ekstraksi data pengujian dari Extent Reports di Jenkins dan mengirimkan data ini melalui email sebagai bagian dari putaran umpan balik integrasi berkelanjutan. Perintah penting pertama adalah groovy.json.JsonSlurper, yang penting untuk mengurai data JSON dalam lingkungan Jenkins. Hal ini memungkinkan skrip menangani respons atau file JSON secara efisien, yang penting untuk mengekstraksi hasil pengujian yang diformat dalam JSON dari Extent Reports. Perintah kunci lain yang digunakan adalah new URL().text, yang mengakses laporan HTML dari Extent Reports yang dihosting di Jenkins. Perintah ini mengambil konten HTML sebagai teks biasa, memungkinkan skrip untuk mengambil data yang diperlukan seperti pengujian total, pengujian yang lulus, dan pengujian yang gagal.
Ekstraksi data dikelola lebih lanjut dengan menggunakan ekspresi reguler untuk menemukan pola spesifik dalam teks HTML, mengidentifikasi angka yang terkait dengan pengujian total, lulus, dan gagal. Itu jenkins.model.Jenkins.instance perintah kemudian digunakan untuk mereferensikan instance Jenkins saat ini, yang diperlukan untuk mengambil berbagai detail pekerjaan dan mengonfigurasi pengaturan secara terprogram. Pasca ekstraksi data, skrip menggunakan Transport.send(message) dari JavaMail API untuk mengirim email yang dibuat. Perintah ini sangat penting untuk mengirimkan pemberitahuan email berisi hasil pengujian yang diekstrak, memastikan bahwa pemangku kepentingan mendapatkan informasi terbaru tentang hasil pengujian terbaru secara langsung melalui email, sehingga meningkatkan waktu komunikasi dan respons dalam siklus pengembangan.
Mengekstrak Data dari Laporan Luas di Jenkins
Skrip Java dan Groovy untuk Jenkins Pipelines
import hudson.model.*import hudson.util.RemotingDiagnosticsimport groovy.json.JsonSlurperdef extractData() {def build = Thread.currentThread().executabledef reportUrl = "${build.getProject().url}${build.number}/HTML_20Report/index.html"def jenkinsConsole = new URL(reportUrl).textdef matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Total Tests:\\s*</span>(\\d+)</br>"def totalTests = matcher ? Integer.parseInt(matcher[0][1]) : 0matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Passed Tests:\\s*</span>(\\d+)</br>"def passedTests = matcher ? Integer.parseInt(matcher[0][1]) : 0matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Failed Tests:\\s*</span>(\\d+)</br>"def failedTests = matcher ? Integer.parseInt(matcher[0][1]) : 0return [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 Notifikasi Email di Jenkins
Memanfaatkan Groovy di Jenkins Post-Build Actions
import groovy.json.JsonSlurperimport jenkins.model.Jenkinsimport javax.mail.Messageimport javax.mail.Transportimport javax.mail.internet.InternetAddressimport javax.mail.internet.MimeMessagedef fetchReportData() {def job = Jenkins.instance.getItemByFullName("YourJobName")def lastBuild = job.lastBuilddef reportUrl = "${lastBuild.url}HTML_20Report/index.html"new URL(reportUrl).withReader { reader ->def data = reader.textdef 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)
Peningkatan dalam Pelaporan Otomatis melalui Jenkins
Menerapkan ekstraksi data otomatis dan pemberitahuan email dalam Jenkins menggunakan Extent Reports secara signifikan mengoptimalkan proses integrasi berkelanjutan (CI). Metodologi ini tidak hanya memastikan pembaruan tepat waktu tetapi juga memfasilitasi penyelesaian masalah secara proaktif dengan memberikan hasil pengujian langsung kepada pemangku kepentingan. Proses ini memanfaatkan kemampuan Jenkins untuk menjadwalkan dan menjalankan pengujian otomatis dalam semalam, yang kemudian diuraikan untuk mengekstrak metrik utama seperti jumlah total pengujian, kelulusan, dan kegagalan langsung dari laporan HTML yang dihasilkan oleh Extent Reporter.
Ekstraksi dan pelaporan otomatis ini menyederhanakan mekanisme umpan balik yang penting untuk lingkungan pengembangan yang tangkas. Dengan mengintegrasikan Extent Reports dengan Jenkins, tim dapat mengelola hasil pengujian dengan lebih baik dan mempertahankan standar kualitas kode yang tinggi melalui pemantauan dan evaluasi yang berkelanjutan. Operasi ini sangat penting dalam menjaga jalur pengembangan yang efisien dan memastikan bahwa semua anggota tim selaras dengan hasil pengujian terbaru dan status proyek.
Pertanyaan Umum tentang Integrasi Pelaporan Jenkins
- Bagaimana cara mengkonfigurasi Jenkins untuk mengirim email setelah build?
- Anda dapat mengonfigurasi ini dalam tindakan pasca-pembuatan konfigurasi pekerjaan Anda, menggunakan opsi Pemberitahuan Email.
- Apa itu Extent Reports dalam konteks Jenkins?
- Extent Reports adalah alat pelaporan sumber terbuka yang menyediakan laporan interaktif dan terperinci tentang pengujian otomatis, yang mudah diintegrasikan ke dalam saluran Jenkins.
- Bisakah Jenkins berintegrasi dengan alat pelaporan lain selain Extent Reports?
- Ya, Jenkins mendukung integrasi dengan beberapa alat pelaporan lain seperti JUnit, TestNG, dan lainnya, menggunakan plugin masing-masing.
- Bagaimana cara mengekstrak data pengujian dari laporan HTML di Jenkins?
- Anda biasanya menggunakan skrip Groovy atau Python dalam Jenkins untuk mengurai konten HTML dan mengekstrak data yang diperlukan.
- Apa manfaat notifikasi email otomatis di Jenkins?
- Email otomatis memberikan masukan langsung mengenai status pembangunan dan pengujian, membantu tim mengatasi masalah dengan lebih cepat dan mempertahankan alur kerja penerapan yang berkelanjutan.
Pemikiran Akhir tentang Pelaporan Jenkins Otomatis
Mengotomatiskan ekstraksi metrik pengujian dari Extent Reports dan mengintegrasikannya ke dalam notifikasi email Jenkins secara signifikan meningkatkan kemampuan pemantauan dalam pipeline CI. Pendekatan ini memungkinkan tim menerima pembaruan tepat waktu tentang hasil pengujian, mendorong tindakan cepat untuk memperbaiki kegagalan dan meningkatkan kode. Proses yang disederhanakan ini tidak hanya menghemat waktu namun juga mengoptimalkan alokasi sumber daya dengan memastikan bahwa semua pemangku kepentingan segera mendapat informasi tentang status bangunan malam, sehingga menjaga umpan balik dan pengembangan yang berkelanjutan.