এক্সটেনশন রিপোর্টিং ইন্টিগ্রেশনের ওভারভিউ
স্বয়ংক্রিয় জাভা প্রকল্পগুলির জন্য জেনকিন্সের সাথে একত্রিত করা এক্সটেনশন রিপোর্টিং পরীক্ষার ফলাফলের দৃশ্যমানতা বাড়ায়, ক্রমাগত একীকরণ পরিবেশের জন্য গুরুত্বপূর্ণ। এই সেটআপে সাধারণত TestNG, Maven এবং Extent Reporter অন্তর্ভুক্ত থাকে, যা SureFire-এর মাধ্যমে পরিচালিত হয়, যা রাত্রিকালীন বিল্ড এবং বিশদ প্রতিবেদনের অনুমতি দেয়।
যাইহোক, জেনকিন্স ইমেল বিজ্ঞপ্তিতে অন্তর্ভুক্তির জন্য এক্সটেন্যান্ট রিপোর্টার এইচটিএমএল ড্যাশবোর্ড থেকে পরীক্ষার সংখ্যা এবং পাস/ফেল অনুপাতের মতো নির্দিষ্ট ডেটা বের করা একটি সাধারণ চ্যালেঞ্জ। স্বয়ংক্রিয় প্রচারের জন্য HTML বিষয়বস্তু থেকে এই বিবরণগুলিকে কার্যকরভাবে পার্স করার জন্য একটি স্ক্রিপ্ট বা পদ্ধতির প্রয়োজন৷
| আদেশ | বর্ণনা |
|---|---|
| groovy.json.JsonSlurper | JSON ফর্ম্যাট করা ডেটা পার্স করতে, JSON ফাইল বা প্রতিক্রিয়াগুলি থেকে ডেটা পরিচালনার সুবিধার্থে Groovy-এ ব্যবহৃত হয়। |
| new URL().text | একটি নতুন URL অবজেক্ট তৈরি করে এবং টেক্সট হিসাবে বিষয়বস্তু নিয়ে আসে, সাধারণত ওয়েব রিসোর্স থেকে সরাসরি ডেটা পড়তে ব্যবহৃত হয়। |
| jenkins.model.Jenkins.instance | জেনকিন্সের বর্তমান চলমান উদাহরণ অ্যাক্সেস করার জন্য সিঙ্গেলটন প্যাটার্ন, কাজের কনফিগারেশন এবং সেটিংস ম্যানিপুলেশন করার অনুমতি দেয়। |
| Thread.currentThread().executable | বর্তমানে চলমান বিল্ড বা কাজের একটি রেফারেন্স পেতে জেনকিন্স স্ক্রিপ্টেড পাইপলাইনে ব্যবহৃত হয়, প্রায়শই গতিশীল হ্যান্ডলিংয়ের জন্য। |
| hudson.util.RemotingDiagnostics | দূরবর্তী জেনকিন্স নোডগুলিতে গ্রোভি স্ক্রিপ্টগুলি সম্পাদন করার অনুমতি দেয়, প্রাথমিকভাবে স্ক্রিপ্টগুলির মধ্যে ডায়াগনস্টিক উদ্দেশ্যে ব্যবহৃত হয়। |
| Transport.send(message) | JavaMail API-এর অংশ স্ক্রিপ্টে প্রস্তুত একটি ইমেল বার্তা পাঠাতে ব্যবহৃত, বিজ্ঞপ্তি সিস্টেমের জন্য প্রয়োজনীয়। |
স্ক্রিপ্ট বাস্তবায়ন ব্যাখ্যা
প্রদত্ত স্ক্রিপ্টগুলি জেনকিন্সের এক্সটেন্যান্ট রিপোর্টগুলি থেকে পরীক্ষার ডেটা নিষ্কাশনকে স্বয়ংক্রিয়ভাবে করার জন্য ডিজাইন করা হয়েছে এবং একটি অবিচ্ছিন্ন ইন্টিগ্রেশন ফিডব্যাক লুপের অংশ হিসাবে ইমেলের মাধ্যমে এই ডেটা পাঠানোর জন্য। প্রথম গুরুত্বপূর্ণ কমান্ড হল , যা জেনকিন্স পরিবেশের মধ্যে JSON ডেটা পার্স করার জন্য অপরিহার্য। এটি স্ক্রিপ্টটিকে JSON প্রতিক্রিয়া বা ফাইলগুলিকে দক্ষতার সাথে পরিচালনা করার অনুমতি দেয়, এক্সটেন্যান্ট রিপোর্ট থেকে JSON-এ ফর্ম্যাট করা পরীক্ষার ফলাফলগুলি বের করার জন্য গুরুত্বপূর্ণ৷ আরেকটি কী কমান্ড ব্যবহৃত হয় , যা জেনকিন্সে হোস্ট করা এক্সটেনশন রিপোর্টের HTML রিপোর্ট অ্যাক্সেস করে। এই কমান্ডটি HTML বিষয়বস্তুকে প্লেইন টেক্সট হিসাবে নিয়ে আসে, স্ক্রিপ্টটিকে মোট পরীক্ষা, পাস এবং ব্যর্থ পরীক্ষার মতো প্রয়োজনীয় ডেটা স্ক্র্যাপ করতে সক্ষম করে।
এইচটিএমএল টেক্সটে নির্দিষ্ট প্যাটার্ন খোঁজার জন্য রেগুলার এক্সপ্রেশন ব্যবহার করে, মোট, পাস করা এবং ব্যর্থ পরীক্ষার সাথে যুক্ত নম্বরগুলি সনাক্ত করে ডেটা নিষ্কাশন আরও পরিচালিত হয়। দ্য কমান্ডটি তখন বর্তমান জেনকিন্স ইনস্ট্যান্স রেফারেন্স করতে ব্যবহৃত হয়, যা বিভিন্ন কাজের বিবরণ আনতে এবং প্রোগ্রামগতভাবে সেটিংস কনফিগার করার জন্য প্রয়োজনীয়। তথ্য নিষ্কাশন পোস্ট, স্ক্রিপ্ট ব্যবহার করে JavaMail API থেকে নির্মিত ইমেল পাঠাতে। এক্সট্র্যাক্ট করা পরীক্ষার ফলাফল সহ ইমেল বিজ্ঞপ্তি পাঠানোর জন্য এই কমান্ডটি অত্যন্ত গুরুত্বপূর্ণ, এটি নিশ্চিত করে যে স্টেকহোল্ডারদের সর্বশেষ পরীক্ষার ফলাফলের সাথে ইমেলের মাধ্যমে আপডেট করা হয়, যার ফলে উন্নয়ন চক্রে যোগাযোগ এবং প্রতিক্রিয়ার সময় বৃদ্ধি পায়।
জেনকিন্সের এক্সটেনশন রিপোর্ট থেকে ডেটা বের করা
জেনকিন্স পাইপলাইনের জন্য জাভা এবং গ্রোভি স্ক্রিপ্টিং
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)
জেনকিন্সের মাধ্যমে স্বয়ংক্রিয় প্রতিবেদনে বর্ধিতকরণ
এক্সটেনশন রিপোর্ট ব্যবহার করে জেনকিন্সের মধ্যে স্বয়ংক্রিয় ডেটা নিষ্কাশন এবং ইমেল বিজ্ঞপ্তিগুলি কার্যকর করা অবিচ্ছিন্ন একীকরণ (CI) প্রক্রিয়াটিকে উল্লেখযোগ্যভাবে অপ্টিমাইজ করে। এই পদ্ধতিটি শুধুমাত্র সময়োপযোগী আপডেট নিশ্চিত করে না বরং স্টেকহোল্ডারদের তাৎক্ষণিক পরীক্ষার ফলাফল প্রদান করে সক্রিয় সমস্যা সমাধানের সুবিধাও দেয়। প্রক্রিয়াটি রাতারাতি স্বয়ংক্রিয় পরীক্ষার সময়সূচী এবং চালানোর জন্য জেনকিন্সের ক্ষমতাকে কাজে লাগায়, যেগুলি এক্সটেন্ট রিপোর্টার দ্বারা তৈরি করা এইচটিএমএল রিপোর্ট থেকে সরাসরি পরীক্ষার মোট সংখ্যা, পাস এবং ব্যর্থতার মতো মূল মেট্রিক্স বের করতে পার্স করা হয়।
এই স্বয়ংক্রিয় নিষ্কাশন এবং রিপোর্টিং চটপটে উন্নয়ন পরিবেশের জন্য প্রয়োজনীয় প্রতিক্রিয়া প্রক্রিয়াকে প্রবাহিত করে। জেনকিন্সের সাথে এক্সটেনশন রিপোর্টগুলিকে একীভূত করার মাধ্যমে, দলগুলি পরীক্ষার ফলাফলগুলি আরও ভালভাবে পরিচালনা করতে পারে এবং ক্রমাগত পর্যবেক্ষণ এবং মূল্যায়নের মাধ্যমে কোড মানের উচ্চ মান বজায় রাখতে পারে। এই ক্রিয়াকলাপগুলি একটি দক্ষ উন্নয়ন পাইপলাইন বজায় রাখার জন্য এবং সমস্ত দলের সদস্যদের সর্বশেষ পরীক্ষার ফলাফল এবং প্রকল্পের স্থিতির সাথে সংযুক্ত রয়েছে তা নিশ্চিত করার জন্য গুরুত্বপূর্ণ।
- একটি বিল্ড করার পরে একটি ইমেল পাঠাতে আমি জেনকিন্সকে কীভাবে কনফিগার করব?
- আপনি ইমেল বিজ্ঞপ্তি বিকল্প ব্যবহার করে আপনার কাজের কনফিগারেশনের পোস্ট-বিল্ড অ্যাকশনগুলিতে এটি কনফিগার করতে পারেন।
- জেনকিন্সের প্রসঙ্গে এক্সটেনশন রিপোর্ট কি?
- Extent Reports হল একটি ওপেন সোর্স রিপোর্টিং টুল যা জেনকিন্স পাইপলাইনে সহজেই একত্রিত হয়ে স্বয়ংক্রিয় পরীক্ষার উপর ইন্টারেক্টিভ এবং বিস্তারিত রিপোর্ট প্রদান করে।
- জেনকিন্স কি এক্সটেনশন রিপোর্ট ছাড়াও অন্যান্য রিপোর্টিং টুলের সাথে একীভূত হতে পারে?
- হ্যাঁ, জেনকিন্স সংশ্লিষ্ট প্লাগইনগুলি ব্যবহার করে JUnit, TestNG এবং আরও অনেক কিছুর মতো অন্যান্য রিপোর্টিং সরঞ্জামগুলির সাথে একীকরণ সমর্থন করে৷
- জেনকিন্সের একটি এইচটিএমএল রিপোর্ট থেকে আমি কীভাবে পরীক্ষার ডেটা বের করব?
- আপনি সাধারণত এইচটিএমএল কন্টেন্ট পার্স করতে এবং প্রয়োজনীয় ডেটা বের করতে জেনকিন্সের মধ্যে গ্রুভি বা পাইথন স্ক্রিপ্টিং ব্যবহার করেন।
- জেনকিন্সে স্বয়ংক্রিয় ইমেল বিজ্ঞপ্তিগুলির সুবিধাগুলি কী কী?
- স্বয়ংক্রিয় ইমেলগুলি বিল্ড এবং টেস্ট স্ট্যাটাসগুলির উপর অবিলম্বে প্রতিক্রিয়া প্রদান করে, দলগুলিকে সমস্যাগুলি দ্রুত সমাধান করতে এবং ক্রমাগত স্থাপনার কার্যপ্রবাহ বজায় রাখতে সহায়তা করে।
এক্সটেনশন রিপোর্টগুলি থেকে পরীক্ষার মেট্রিক্সের নিষ্কাশন স্বয়ংক্রিয়ভাবে এবং জেনকিন্স ইমেল বিজ্ঞপ্তিগুলিতে এগুলিকে একীভূত করা একটি CI পাইপলাইনের মধ্যে পর্যবেক্ষণ ক্ষমতাগুলিকে উল্লেখযোগ্যভাবে বৃদ্ধি করে৷ এই পদ্ধতিটি দলগুলিকে পরীক্ষার ফলাফল সম্পর্কে সময়মতো আপডেট পেতে, ব্যর্থতা সংশোধন এবং কোডের উন্নতির দিকে দ্রুত পদক্ষেপের প্রচার করার অনুমতি দেয়। সুবিন্যস্ত প্রক্রিয়াটি কেবল সময়ই সাশ্রয় করে না বরং সমস্ত স্টেকহোল্ডারদের রাত্রিকালীন বিল্ডের অবস্থা সম্পর্কে অবিলম্বে অবহিত করা নিশ্চিত করে সম্পদ বরাদ্দকে অপ্টিমাইজ করে, এইভাবে প্রতিক্রিয়া এবং বিকাশের একটি ক্রমাগত লুপ বজায় রাখে।