विस्तार रिपोर्टिंग एकीकरण का अवलोकन
स्वचालित जावा परियोजनाओं के लिए जेनकींस के साथ एक्सटेंट रिपोर्टिंग को एकीकृत करने से परीक्षण परिणामों की दृश्यता बढ़ जाती है, जो निरंतर एकीकरण वातावरण के लिए महत्वपूर्ण है। इस सेटअप में आम तौर पर TestNG, Maven और Extent रिपोर्टर शामिल होते हैं, जिन्हें SureFire के माध्यम से प्रबंधित किया जाता है, जो रात्रिकालीन निर्माण और विस्तृत रिपोर्टिंग की अनुमति देता है।
हालाँकि, एक आम चुनौती जेनकिंस ईमेल सूचनाओं में शामिल करने के लिए एक्सटेंट रिपोर्टर HTML डैशबोर्ड से परीक्षण गणना और पास/असफल अनुपात जैसे विशिष्ट डेटा निकालना है। स्वचालित प्रसार के लिए HTML सामग्री से इन विवरणों को प्रभावी ढंग से पार्स करने के लिए एक स्क्रिप्ट या विधि की आवश्यकता होती है।
| आज्ञा | विवरण |
|---|---|
| groovy.json.JsonSlurper | JSON स्वरूपित डेटा को पार्स करने के लिए ग्रूवी में उपयोग किया जाता है, जिससे JSON फ़ाइलों या प्रतिक्रियाओं से डेटा प्रबंधन की सुविधा मिलती है। |
| new URL().text | एक नया यूआरएल ऑब्जेक्ट बनाता है और सामग्री को टेक्स्ट के रूप में लाता है, जिसका उपयोग आमतौर पर सीधे वेब संसाधनों से डेटा पढ़ने के लिए किया जाता है। |
| jenkins.model.Jenkins.instance | जेनकींस के वर्तमान चल रहे उदाहरण तक पहुंचने के लिए सिंगलटन पैटर्न, नौकरी कॉन्फ़िगरेशन और सेटिंग्स में हेरफेर की अनुमति देता है। |
| Thread.currentThread().executable | जेनकींस स्क्रिप्टेड पाइपलाइन में वर्तमान में चल रहे बिल्ड या जॉब का संदर्भ प्राप्त करने के लिए, अक्सर गतिशील हैंडलिंग के लिए उपयोग किया जाता है। |
| hudson.util.RemotingDiagnostics | दूरस्थ जेनकींस नोड्स पर ग्रूवी स्क्रिप्ट के निष्पादन की अनुमति देता है, जिसका उपयोग मुख्य रूप से स्क्रिप्ट के भीतर नैदानिक उद्देश्यों के लिए किया जाता है। |
| Transport.send(message) | जावामेल एपीआई का एक हिस्सा स्क्रिप्ट में तैयार ईमेल संदेश भेजने के लिए उपयोग किया जाता है, जो अधिसूचना प्रणालियों के लिए आवश्यक है। |
स्क्रिप्ट कार्यान्वयन स्पष्टीकरण
प्रदान की गई स्क्रिप्ट जेनकींस में एक्स्टेंट रिपोर्ट से परीक्षण डेटा के निष्कर्षण को स्वचालित करने और निरंतर एकीकरण फीडबैक लूप के हिस्से के रूप में इस डेटा को ईमेल के माध्यम से भेजने के लिए डिज़ाइन की गई हैं। पहला महत्वपूर्ण आदेश है groovy.json.JsonSlurper, जो जेनकींस वातावरण के भीतर JSON डेटा को पार्स करने के लिए आवश्यक है। यह स्क्रिप्ट को JSON प्रतिक्रियाओं या फ़ाइलों को कुशलतापूर्वक संभालने की अनुमति देता है, जो कि एक्सटेंट रिपोर्ट से JSON में स्वरूपित परीक्षण परिणामों को निकालने के लिए महत्वपूर्ण है। प्रयुक्त एक अन्य कुंजी कमांड है new URL().text, जो जेनकींस पर होस्ट की गई एक्सटेंट रिपोर्ट्स की HTML रिपोर्ट तक पहुंचता है। यह कमांड HTML सामग्री को सादे पाठ के रूप में लाता है, जिससे स्क्रिप्ट को कुल परीक्षण, उत्तीर्ण और असफल परीक्षण जैसे आवश्यक डेटा को स्क्रैप करने में सक्षम बनाया जाता है।
HTML टेक्स्ट में विशिष्ट पैटर्न खोजने, कुल, उत्तीर्ण और असफल परीक्षणों से जुड़ी संख्याओं की पहचान करने के लिए नियमित अभिव्यक्तियों का उपयोग करके डेटा के निष्कर्षण को आगे प्रबंधित किया जाता है। jenkins.model.Jenkins.instance कमांड का उपयोग वर्तमान जेनकींस उदाहरण को संदर्भित करने के लिए किया जाता है, जो विभिन्न कार्य विवरण लाने और सेटिंग्स को प्रोग्रामेटिक रूप से कॉन्फ़िगर करने के लिए आवश्यक है। डेटा निष्कर्षण के बाद स्क्रिप्ट का उपयोग होता है Transport.send(message) निर्मित ईमेल भेजने के लिए जावामेल एपीआई से। यह कमांड निकाले गए परीक्षण परिणामों के साथ ईमेल सूचनाएं भेजने के लिए महत्वपूर्ण है, यह सुनिश्चित करता है कि हितधारकों को नवीनतम परीक्षण परिणामों के साथ सीधे ईमेल के माध्यम से अपडेट किया जाता है, जिससे विकास चक्रों में संचार और प्रतिक्रिया समय में वृद्धि होती है।
जेनकींस में विस्तार रिपोर्ट से डेटा निकालना
जेनकींस पाइपलाइनों के लिए जावा और ग्रूवी स्क्रिप्टिंग
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)
जेनकींस में ईमेल सूचनाओं को बढ़ाने के लिए स्क्रिप्ट
जेनकींस पोस्ट-बिल्ड क्रियाओं में ग्रूवी का उपयोग करना
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)
जेनकींस के माध्यम से स्वचालित रिपोर्टिंग में संवर्द्धन
एक्स्टेंट रिपोर्ट्स का उपयोग करके जेनकींस के भीतर स्वचालित डेटा निष्कर्षण और ईमेल सूचनाओं को लागू करना निरंतर एकीकरण (सीआई) प्रक्रिया को महत्वपूर्ण रूप से अनुकूलित करता है। यह पद्धति न केवल समय पर अपडेट सुनिश्चित करती है बल्कि हितधारकों को तत्काल परीक्षण परिणाम प्रदान करके सक्रिय समस्या समाधान की सुविधा भी देती है। यह प्रक्रिया स्वचालित परीक्षणों को रातों-रात शेड्यूल करने और चलाने के लिए जेनकींस की क्षमताओं का लाभ उठाती है, जिन्हें फिर एक्सटेंट रिपोर्टर द्वारा उत्पन्न HTML रिपोर्ट से सीधे परीक्षणों की कुल संख्या, पास और विफलताओं जैसे प्रमुख मेट्रिक्स निकालने के लिए पार्स किया जाता है।
यह स्वचालित निष्कर्षण और रिपोर्टिंग त्वरित विकास वातावरण के लिए आवश्यक फीडबैक तंत्र को सुव्यवस्थित करती है। जेनकींस के साथ एक्सटेंट रिपोर्ट को एकीकृत करके, टीमें परीक्षण परिणामों को बेहतर ढंग से प्रबंधित कर सकती हैं और निरंतर निगरानी और मूल्यांकन के माध्यम से कोड गुणवत्ता के उच्च मानकों को बनाए रख सकती हैं। ये ऑपरेशन एक कुशल विकास पाइपलाइन को बनाए रखने और यह सुनिश्चित करने के लिए महत्वपूर्ण हैं कि टीम के सभी सदस्य नवीनतम परीक्षण परिणामों और परियोजना स्थितियों के साथ संरेखित हैं।
जेनकींस रिपोर्टिंग एकीकरण पर सामान्य प्रश्न
- मैं निर्माण के बाद ईमेल भेजने के लिए जेनकींस को कैसे कॉन्फ़िगर करूं?
- आप इसे ईमेल अधिसूचना विकल्प का उपयोग करके अपने कार्य कॉन्फ़िगरेशन की पोस्ट-बिल्ड क्रियाओं में कॉन्फ़िगर कर सकते हैं।
- जेनकींस के संदर्भ में एक्सटेंट रिपोर्ट क्या है?
- एक्स्टेंट रिपोर्ट्स एक ओपन-सोर्स रिपोर्टिंग टूल है जो स्वचालित परीक्षणों पर इंटरैक्टिव और विस्तृत रिपोर्ट प्रदान करता है, आसानी से जेनकींस पाइपलाइनों में एकीकृत होता है।
- क्या जेनकींस एक्सटेंट रिपोर्ट के अलावा अन्य रिपोर्टिंग टूल के साथ एकीकृत हो सकता है?
- हां, जेनकींस संबंधित प्लगइन्स का उपयोग करके कई अन्य रिपोर्टिंग टूल जैसे जुनीट, टेस्टएनजी और अन्य के साथ एकीकरण का समर्थन करता है।
- मैं जेनकींस में HTML रिपोर्ट से परीक्षण डेटा कैसे निकालूं?
- आप आमतौर पर HTML सामग्री को पार्स करने और आवश्यक डेटा निकालने के लिए जेनकींस के भीतर ग्रूवी या पायथन स्क्रिप्टिंग का उपयोग करते हैं।
- जेनकींस में स्वचालित ईमेल सूचनाओं के क्या लाभ हैं?
- स्वचालित ईमेल निर्माण और परीक्षण स्थितियों पर तत्काल प्रतिक्रिया प्रदान करते हैं, जिससे टीमों को समस्याओं का तेजी से समाधान करने और निरंतर तैनाती वर्कफ़्लो बनाए रखने में मदद मिलती है।
स्वचालित जेनकींस रिपोर्टिंग पर अंतिम विचार
एक्सटेंट रिपोर्ट से परीक्षण मेट्रिक्स के निष्कर्षण को स्वचालित करना और इन्हें जेनकींस ईमेल सूचनाओं में एकीकृत करना सीआई पाइपलाइन के भीतर निगरानी क्षमताओं को महत्वपूर्ण रूप से बढ़ाता है। यह दृष्टिकोण टीमों को परीक्षण परिणामों के बारे में समय पर अपडेट प्राप्त करने, विफलताओं को ठीक करने और कोड में सुधार करने की दिशा में त्वरित कार्रवाई को बढ़ावा देने की अनुमति देता है। सुव्यवस्थित प्रक्रिया न केवल समय बचाती है बल्कि यह सुनिश्चित करके संसाधन आवंटन को भी अनुकूलित करती है कि सभी हितधारकों को रात्रिकालीन निर्माण की स्थिति के बारे में तुरंत सूचित किया जाता है, इस प्रकार फीडबैक और विकास का निरंतर चक्र बना रहता है।