التكامل المستمر (CI)#
التكامل المستمر (CI) جانب أساسي من تطوير البرمجيات، ويتضمن دمج التغييرات واختبارها تلقائيًا. يتيح لنا CI الحفاظ على جودة الشيفرة العالية من خلال اكتشاف المشكلات مبكرًا وبشكل متكرر أثناء عملية التطوير. في Ultralytics، نستخدم اختبارات CI متنوعة لضمان جودة قاعدة الشيفرة وسلامتها.
إجراءات CI#
فيما يلي وصف موجز لإجراءات CI لدينا:
- CI: هذا اختبار CI الأساسي لدينا، ويشغّل الاختبارات الوحدوية، ويشمل، بحسب المستودع، اختبارات أشمل مثل فحوصات التصدير والاختبارات المعيارية.
- نشر Docker: يختبر هذا الإجراء نشر المشروع باستخدام Docker للتأكد من عمل Dockerfile والنصوص البرمجية المرتبطة به على النحو الصحيح.
- الروابط المعطّلة: يفحص هذا الاختبار قاعدة الشيفرة بحثًا عن أي روابط معطّلة أو غير فعالة في ملفات Markdown أو HTML.
- CodeQL: CodeQL أداة من GitHub تُجري تحليلًا دلاليًا لشيفرتنا، مما يساعد على العثور على ثغرات أمنية محتملة والحفاظ على جودة الشيفرة.
- النشر على PyPI: يبني سير العمل هذا الحزمة وينشر كل إصدار جديد على PyPI.
نتائج CI#
يوضح الجدول أدناه حالة اختبارات CI هذه لمستودعاتنا الرئيسية:
| المستودع | CI | نشر Docker | الروابط المعطّلة | CodeQL | النشر على PyPI والوثائق |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| sdk | |||||
| lite | |||||
| openapi | |||||
| skills | |||||
| yolo-ios-app | |||||
| yolo-flutter-app | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
تعرض كل شارة حالة آخر تشغيل لاختبار CI المقابل على الفرع main في المستودع المعني. إذا فشل الاختبار، فستعرض الشارة حالة «فاشل»، وإذا اجتازه، فستعرض حالة «ناجح».
إذا لاحظت فشل اختبار، فسيكون من المفيد جدًا الإبلاغ عنه عبر بلاغ GitHub في المستودع المعني.
تذكّر أن نجاح اختبار CI لا يعني أن كل شيء مثالي. يُوصى دائمًا بمراجعة الشيفرة يدويًا قبل النشر أو دمج التغييرات.
تغطية الشيفرة#
تغطية الشيفرة مقياس يمثّل النسبة المئوية من قاعدة الشيفرة التي تُنفَّذ عند تشغيل الاختبارات. وهي توضح مدى شمول الاختبارات لشيفرتك، وقد تكون بالغة الأهمية في تحديد أجزاء التطبيق التي لم تُختبر. وغالبًا ما ترتبط النسبة المرتفعة لتغطية الشيفرة بانخفاض احتمال وجود أخطاء. لكن من الضروري فهم أن تغطية الشيفرة لا تضمن خلوّها من العيوب، بل تشير فقط إلى أجزاء الشيفرة التي نفّذتها الاختبارات.
التكامل مع codecov.io#
في Ultralytics، دمجنا مستودعاتنا مع codecov.io، وهي منصة شائعة عبر الإنترنت لقياس تغطية الشيفرة وعرضها بصريًا. تقدم Codecov رؤى تفصيلية ومقارنات للتغطية بين عمليات الإيداع، بالإضافة إلى تراكبات مرئية مباشرة على شيفرتك توضّح الأسطر التي شملتها التغطية.
من خلال التكامل مع Codecov، نسعى إلى الحفاظ على جودة شيفرتنا وتحسينها، عبر التركيز على المواضع المعرضة للأخطاء أو التي تحتاج إلى مزيد من الاختبارات.
نتائج التغطية#
للاطلاع سريعًا على حالة تغطية الشيفرة في مستودعاتنا، أضفنا شارات Codecov ومعاينات مخطط شروق الشمس لكل مشروع نتتبعه. تمثل الدائرة الداخلية في كل مخطط شروق الشمس المشروع بأكمله، ثم تظهر المجلدات بالابتعاد عن المركز، وأخيرًا ملف واحد. ويمثل حجم كل شريحة عدد العبارات، فيما يمثل لونها نسبة التغطية. للاطلاع على التفاصيل كاملة، تفضل بزيارة مؤسسة Ultralytics على Codecov.
| المستودع | تغطية الشيفرة | مخطط شروق الشمس |
|---|---|---|
| actions | ||
| ultralytics | ||
| inference | ||
| yolo-flutter-app | ||
| yolo-ios-app | ||
| llm | ||
| profile | ||
| template | ||
| template-rust | ||
| replicate |
الأسئلة الشائعة#
يشمل التكامل المستمر (CI) في Ultralytics دمج تغييرات الشيفرة واختبارها تلقائيًا لضمان معايير الجودة العالية. ويتضمن إعداد CI لدينا تشغيل اختبارات الوحدات واختبارات التصدير والمعايير. بالإضافة إلى ذلك، نجري النشر باستخدام Docker، وفحوصات الروابط المعطّلة، وتحليل CodeQL للكشف عن الثغرات الأمنية، والنشر على PyPI لتجهيز برامجنا وتوزيعها.
تستخدم Ultralytics إجراء CI مخصصًا للتحقق من الروابط المعطّلة في ملفات Markdown وHTML لدينا. ويساعد ذلك على الحفاظ على سلامة وثائقنا من خلال فحص الروابط الميتة أو المعطّلة وتحديدها، ما يضمن حصول المستخدمين دائمًا على موارد دقيقة ومتاحة.
يُعد تحليل CodeQL بالغ الأهمية لـ Ultralytics، إذ يجري تحليلًا دلاليًا للشيفرة لاكتشاف الثغرات الأمنية المحتملة والحفاظ على معايير الجودة العالية. وباستخدام CodeQL، يمكننا تحديد المخاطر في شيفرتنا والحد منها استباقيًا، ما يساعدنا على تقديم حلول برمجية متينة وآمنة.
تستخدم Ultralytics Docker للتحقق من صحة نشر مشاريعنا عبر إجراء CI مخصص. وتضمن هذه العملية أن ملف Dockerfile والبرامج النصية المرتبطة به يعملان على النحو الصحيح، ما يتيح إنشاء بيئات نشر متسقة وقابلة لإعادة الإنتاج، وهي ضرورية لتوفير حلول ذكاء اصطناعي قابلة للتوسع وموثوقة.
يُنشئ النشر الآلي على PyPI حزمنا وينشر كل إصدار جديد دون خطوات يدوية. وتُعد هذه الخطوة أساسية لتوزيع حزم Python الخاصة بـ Ultralytics، إذ تتيح للمستخدمين تثبيت أدواتنا واستخدامها بسهولة عبر فهرس حزم Python (PyPI).
تقيس Ultralytics تغطية الشيفرة من خلال التكامل مع Codecov، ما يوفر رؤى حول مقدار قاعدة الشيفرة التي تُنفّذ أثناء الاختبارات. وقد تشير التغطية المرتفعة للشيفرة إلى أن الشيفرة خضعت لاختبارات جيدة، وتساعد على اكتشاف المواضع غير المختبرة التي قد تكون عرضة للأخطاء. ويمكن الاطلاع على مقاييس تغطية الشيفرة التفصيلية عبر الشارات المعروضة في مستودعاتنا الرئيسية أو مباشرةً على Codecov.