نظرة عامة على مدى تكامل التقارير
يؤدي دمج تقارير النطاق مع Jenkins لمشاريع Java الآلية إلى تحسين رؤية نتائج الاختبار، وهو أمر بالغ الأهمية لبيئات التكامل المستمر. يشتمل هذا الإعداد عادةً على TestNG وMaven وExtent Reporter، والتي تتم إدارتها من خلال SureFire، مما يسمح بالإصدارات الليلية وإعداد التقارير التفصيلية.
ومع ذلك، يتمثل التحدي الشائع في استخراج بيانات محددة مثل أعداد الاختبارات ونسب النجاح/الفشل من لوحة معلومات Extent Reporter HTML لتضمينها في إشعارات البريد الإلكتروني لـ Jenkins. يتطلب هذا برنامجًا نصيًا أو طريقة لتحليل هذه التفاصيل بشكل فعال من محتوى HTML للنشر الآلي.
| يأمر | وصف |
|---|---|
| groovy.json.JsonSlurper | يُستخدم في Groovy لتحليل البيانات بتنسيق JSON، وتسهيل معالجة البيانات من ملفات JSON أو الاستجابات. |
| new URL().text | ينشئ كائن URL جديدًا ويجلب المحتوى كنص، وهو شائع الاستخدام لقراءة البيانات مباشرة من موارد الويب. |
| jenkins.model.Jenkins.instance | نمط Singleton للوصول إلى مثيل Jenkins الحالي قيد التشغيل، مما يسمح بمعالجة تكوينات وإعدادات الوظيفة. |
| Thread.currentThread().executable | يُستخدم في خط أنابيب Jenkins النصي للحصول على مرجع للإنشاء أو الوظيفة قيد التشغيل حاليًا، وغالبًا ما يكون ذلك من أجل المعالجة الديناميكية. |
| hudson.util.RemotingDiagnostics | يسمح بتنفيذ البرامج النصية Groovy على عقد Jenkins البعيدة، والتي تستخدم بشكل أساسي لأغراض التشخيص داخل البرامج النصية. |
| Transport.send(message) | جزء من JavaMail API يُستخدم لإرسال رسالة بريد إلكتروني معدة في البرنامج النصي، وهي ضرورية لأنظمة الإشعارات. |
شرح تنفيذ البرنامج النصي
تم تصميم البرامج النصية المقدمة لأتمتة استخراج بيانات الاختبار من Extent Reports في Jenkins وإرسال هذه البيانات عبر البريد الإلكتروني كجزء من حلقة تعليقات التكامل المستمرة. الأمر المهم الأول هو ، وهو أمر ضروري لتحليل بيانات JSON داخل بيئة Jenkins. يسمح هذا للبرنامج النصي بالتعامل مع استجابات أو ملفات JSON بكفاءة، وهو أمر بالغ الأهمية لاستخراج نتائج الاختبار المنسقة في JSON من Extent Reports. أمر رئيسي آخر يستخدم هو ، الذي يصل إلى تقرير HTML الخاص بتقارير Extent Reports المستضافة على Jenkins. يقوم هذا الأمر بجلب محتوى HTML كنص عادي، مما يمكّن البرنامج النصي من استخراج البيانات المطلوبة مثل الاختبارات الإجمالية والاختبارات الناجحة والفاشلة.
تتم إدارة استخراج البيانات بشكل أكبر باستخدام التعبيرات العادية للعثور على أنماط محددة في نص HTML، وتحديد الأرقام المرتبطة بالاختبارات الإجمالية والناجحة والفاشلة. ال يتم بعد ذلك استخدام الأمر للإشارة إلى مثيل Jenkins الحالي، وهو أمر ضروري لجلب تفاصيل الوظيفة المختلفة وتكوين الإعدادات برمجيًا. بعد استخراج البيانات، يستخدم البرنامج النصي من JavaMail API لإرسال البريد الإلكتروني الذي تم إنشاؤه. يعد هذا الأمر ضروريًا لإرسال إشعارات البريد الإلكتروني مع نتائج الاختبار المستخرجة، مما يضمن إطلاع أصحاب المصلحة على أحدث نتائج الاختبار مباشرة عبر البريد الإلكتروني، وبالتالي تحسين أوقات الاتصال والاستجابة في دورات التطوير.
استخراج البيانات من تقارير المدى في جنكينز
Java وGroovy Scripting لخطوط أنابيب Jenkins
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)
برنامج نصي لتعزيز إشعارات البريد الإلكتروني في جنكينز
استخدام Groovy في إجراءات Jenkins بعد البناء
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)
تحسينات في التقارير الآلية من خلال جنكينز
يؤدي تنفيذ استخراج البيانات الآلي وإشعارات البريد الإلكتروني داخل Jenkins باستخدام Extent Reports إلى تحسين عملية التكامل المستمر (CI) بشكل كبير. لا تضمن هذه المنهجية التحديثات في الوقت المناسب فحسب، بل تسهل أيضًا حل المشكلات بشكل استباقي من خلال تزويد أصحاب المصلحة بنتائج اختبار فورية. تعمل هذه العملية على تعزيز قدرات Jenkins في جدولة الاختبارات الآلية وتشغيلها بين عشية وضحاها، والتي يتم تحليلها بعد ذلك لاستخراج المقاييس الرئيسية مثل العدد الإجمالي للاختبارات والنجاحات والإخفاقات مباشرة من تقارير HTML التي تم إنشاؤها بواسطة Extent Reporter.
يعمل هذا الاستخراج وإعداد التقارير الآلي على تبسيط آلية التغذية الراجعة الضرورية لبيئات التطوير الرشيقة. من خلال دمج تقارير النطاق مع Jenkins، يمكن للفرق إدارة نتائج الاختبار بشكل أفضل والحفاظ على معايير عالية لجودة التعليمات البرمجية من خلال المراقبة والتقييم المستمر. تعتبر هذه العمليات حاسمة في الحفاظ على خط أنابيب تطوير فعال وضمان توافق جميع أعضاء الفريق مع أحدث نتائج الاختبار وحالات المشروع.
- كيف أقوم بتكوين Jenkins لإرسال بريد إلكتروني بعد الإنشاء؟
- يمكنك تكوين ذلك في إجراءات ما بعد الإنشاء الخاصة بتكوين وظيفتك، باستخدام خيار إشعار البريد الإلكتروني.
- ما هي تقارير النطاق في سياق جينكينز؟
- تعد Extent Reports أداة تقارير مفتوحة المصدر توفر تقارير تفاعلية ومفصلة عن الاختبارات الآلية، ويمكن دمجها بسهولة في مسارات Jenkins.
- هل يمكن لجينكينز التكامل مع أدوات إعداد التقارير الأخرى إلى جانب تقارير النطاق؟
- نعم، يدعم Jenkins التكامل مع العديد من أدوات إعداد التقارير الأخرى مثل JUnit وTestNG والمزيد، باستخدام المكونات الإضافية المعنية.
- كيف يمكنني استخراج بيانات الاختبار من تقرير HTML في جنكينز؟
- عادةً ما تستخدم البرمجة النصية Groovy أو Python داخل Jenkins لتحليل محتوى HTML واستخراج البيانات المطلوبة.
- ما هي فوائد إشعارات البريد الإلكتروني الآلية في جنكينز؟
- توفر رسائل البريد الإلكتروني التلقائية تعليقات فورية حول حالات البناء والاختبار، مما يساعد الفرق على معالجة المشكلات بشكل أسرع والحفاظ على سير عمل النشر المستمر.
تعمل أتمتة استخراج مقاييس الاختبار من Extent Reports ودمجها في إشعارات البريد الإلكتروني لـ Jenkins على تعزيز إمكانات المراقبة بشكل كبير ضمن مسار CI. يسمح هذا النهج للفرق بتلقي التحديثات في الوقت المناسب حول نتائج الاختبار، وتعزيز الإجراءات السريعة نحو إصلاح حالات الفشل وتحسين التعليمات البرمجية. لا توفر العملية المبسطة الوقت فحسب، بل تعمل أيضًا على تحسين تخصيص الموارد من خلال ضمان إبلاغ جميع أصحاب المصلحة على الفور بحالة الإصدارات الليلية، وبالتالي الحفاظ على حلقة مستمرة من التعليقات والتطوير.