التكامل المستمر (CI)

يُعد التكامل المستمر (CI) جانباً أساسياً من تطوير البرمجيات، حيث يتضمن دمج التغييرات واختبارها تلقائياً. يتيح لنا CI الحفاظ على كود برمجي عالي الجودة من خلال اكتشاف المشكلات مبكراً وبشكل متكرر في عملية التطوير. في Ultralytics، نستخدم اختبارات CI متنوعة لضمان جودة وسلامة الكود الخاص بنا.

إجراءات CI

فيما يلي وصف موجز لإجراءات CI الخاصة بنا:

  • CI: هذا هو اختبار CI الرئيسي لدينا والذي يتضمن تشغيل اختبارات الوحدة (unit tests)، وفحوصات التدقيق اللغوي للكود (linting checks)، وأحياناً اختبارات أكثر شمولاً اعتماداً على المستودع.
  • نشر Docker: يتحقق هذا الاختبار من نشر المشروع باستخدام Docker للتأكد من أن ملف Dockerfile والسكربتات ذات الصلة تعمل بشكل صحيح.
  • الروابط المعطلة: يقوم هذا الاختبار بمسح الكود البرمجي بحثاً عن أي روابط معطلة أو تالفة في ملفات markdown أو HTML الخاصة بنا.
  • CodeQL: CodeQL هي أداة من GitHub تقوم بإجراء تحليل دلالي على الكود الخاص بنا، مما يساعد في العثور على ثغرات أمنية محتملة والحفاظ على جودة الكود.
  • النشر على PyPI: يتحقق هذا الاختبار مما إذا كان يمكن حزم المشروع ونشره على PyPI دون أي أخطاء.

نتائج CI

فيما يلي الجدول الذي يوضح حالة اختبارات CI هذه لمستودعاتنا الرئيسية:

المستودعCIنشر Dockerالروابط المعطلةCodeQLالنشر على PyPI والتوثيق
yolov3YOLOv3 CIنشر صور Dockerالتحقق من الروابط المعطلةCodeQL
yolov5YOLOv5 CIنشر صور Dockerالتحقق من الروابط المعطلةCodeQL
ultralyticsultralytics CIنشر صور Dockerالتحقق من الروابط المعطلةCodeQLالنشر على PyPI ونشر التوثيق بناء Conda
yolo-ios-app (App Store)iOS App CICodeQLنشر تطبيق iOS
yolo-flutter-appFlutter App CICodeQLالنشر على pub.dev
hubHUB CIالتحقق من الروابط المعطلة
hub-sdkHUB-SDK CIالتحقق من الروابط المعطلةCodeQLالنشر على PyPI
thopإجراءات UltralyticsCodeQLالنشر على PyPI
actionsActions CICodeQLالنشر على PyPI
mkdocsإجراءات UltralyticsCodeQLالنشر على PyPI
docsإجراءات Ultralyticsالتحقق من الروابط المعطلةالتحقق من النطاقاتpages-build-deployment
handbookإجراءات Ultralyticsالتحقق من الروابط المعطلةpages-build-deployment
starsإجراءات Ultralyticsتحديث التحليلات
CLIPCLIP CI

يوضح كل شارة حالة آخر تشغيل لاختبار CI المقابل على فرع main الخاص بالمستودع المعني. إذا فشل الاختبار، ستعرض الشارة حالة "فشل" (failing)، وإذا نجح، ستعرض حالة "نجاح" (passing).

إذا لاحظت فشل اختبار ما، فسيكون من المفيد جداً الإبلاغ عنه من خلال GitHub issue في المستودع المعني.

تذكر أن اختبار CI الناجح لا يعني أن كل شيء مثالي. يُنصح دائماً بمراجعة الكود يدوياً قبل النشر أو دمج التغييرات.

تغطية الكود (Code Coverage)

تغطية الكود هي مقياس يمثل النسبة المئوية للكود البرمجي الذي يتم تنفيذه عند تشغيل الاختبارات. إنها توفر رؤية حول مدى فاعلية اختباراتك في تغطية الكود الخاص بك، ويمكن أن تكون حاسمة في تحديد الأجزاء غير المختبرة من تطبيقك. غالباً ما ترتبط النسبة المئوية العالية لتغطية الكود باحتمالية أقل لوجود أخطاء. ومع ذلك، من الضروري فهم أن تغطية الكود لا تضمن خلو الكود من العيوب؛ فهي تشير ببساطة إلى أجزاء الكود التي تم تنفيذها بواسطة الاختبارات.

التكامل مع codecov.io

في Ultralytics، قمنا بدمج مستودعاتنا مع codecov.io، وهي منصة شهيرة على الإنترنت لقياس وتصور تغطية الكود. توفر Codecov رؤى مفصلة، ومقارنات للتغطية بين الالتزامات (commits)، وتراكبات مرئية مباشرة على الكود الخاص بك، توضح الأسطر التي تمت تغطيتها.

من خلال التكامل مع Codecov، نهدف إلى الحفاظ على جودة الكود الخاص بنا وتحسينها من خلال التركيز على المجالات التي قد تكون عرضة للأخطاء أو تحتاج إلى مزيد من الاختبار.

نتائج التغطية

لإلقاء نظرة سريعة على حالة تغطية الكود لحزمة ultralytics Python، قمنا بتضمين شارة ورسم بياني شعاعي لنتائج تغطية ultralytics. تُظهر هذه الصور النسبة المئوية للكود المغطى باختباراتنا، مما يوفر مقياساً سريعاً لجهود الاختبار الخاصة بنا. للحصول على التفاصيل الكاملة، تفضل بزيارة تقرير Ultralytics على Codecov.

المستودعتغطية الكود (Code Coverage)
ultralyticscodecov

في الرسم البياني الشعاعي أدناه، الدائرة الأعمق هي المشروع بأكمله، وكلما ابتعدنا عن المركز نجد المجلدات ثم أخيراً الملف الواحد. يمثل حجم ولون كل شريحة عدد العبارات والتغطية، على التوالي.

Ultralytics Codecov Image

الأسئلة الشائعة

ما هو التكامل المستمر (CI) في Ultralytics؟

يتضمن التكامل المستمر (CI) في Ultralytics دمج وتغيير الكود واختباره تلقائياً لضمان معايير جودة عالية. يتضمن إعداد CI الخاص بنا تشغيل اختبارات الوحدة، وفحوصات التدقيق اللغوي للكود، والاختبارات الشاملة. بالإضافة إلى ذلك، نقوم بـ نشر Docker، والتحقق من الروابط المعطلة، وتحليل CodeQL للثغرات الأمنية، والنشر على PyPI لحزم برامجنا وتوزيعها.

كيف تتحقق Ultralytics من الروابط المعطلة في التوثيق والكود؟

تستخدم Ultralytics إجراء CI خاصاً لـ التحقق من الروابط المعطلة داخل ملفات markdown و HTML الخاصة بنا. يساعد هذا في الحفاظ على سلامة التوثيق الخاص بنا عن طريق مسح وتحديد الروابط التالفة أو المعطلة، مما يضمن حصول المستخدمين دائماً على موارد دقيقة وفعالة.

لماذا يعد تحليل CodeQL مهماً لقاعدة الكود في Ultralytics؟

تحليل CodeQL أمر بالغ الأهمية لـ Ultralytics لأنه يقوم بتحليل دلالي للكود للعثور على ثغرات أمنية محتملة والحفاظ على معايير جودة عالية. باستخدام CodeQL، يمكننا تحديد المخاطر والتخفيف من حدتها في الكود الخاص بنا بشكل استباقي، مما يساعدنا على تقديم حلول برمجية قوية وآمنة.

كيف تستخدم Ultralytics نظام Docker للنشر؟

تستخدم Ultralytics نظام Docker للتحقق من نشر مشاريعنا من خلال إجراء CI مخصص. تضمن هذه العملية أن ملف Dockerfile والسكربتات المرتبطة به تعمل بشكل صحيح، مما يسمح ببيئات نشر متسقة وقابلة للتكرار، وهي أمور بالغة الأهمية لحلول الذكاء الاصطناعي القابلة للتوسع والموثوقة.

ما هو دور النشر الآلي على PyPI في Ultralytics؟

يضمن النشر الآلي على PyPI إمكانية حزم مشاريعنا ونشرها دون أخطاء. تعد هذه الخطوة ضرورية لتوزيع حزم Ultralytics Python، مما يسمح للمستخدمين بتثبيت أدواتنا واستخدامها بسهولة عبر مؤشر حزمة Python (PyPI).

كيف تقيس Ultralytics تغطية الكود ولماذا هي مهمة؟

تقيس Ultralytics تغطية الكود من خلال التكامل مع Codecov، مما يوفر رؤى حول مدى تنفيذ الكود البرمجي أثناء الاختبارات. يمكن أن تشير التغطية العالية للكود إلى كود مختبر جيداً، مما يساعد في كشف المناطق غير المختبرة التي قد تكون عرضة للأخطاء. يمكن استكشاف مقاييس تغطية الكود التفصيلية عبر الشارات المعروضة على مستودعاتنا الرئيسية أو مباشرة على Codecov.

التعليقات