CI/CD / أسس الدمج والمرشح / الدرس 2
الاعتماد والتوازي ورسوم خط العمل
صمّم رسم اعتماد يعبّر عن الأدلة المطلوبة بدلاً من ترتيب المراحل العرضي.
في هذه الصفحة
أهداف الدرس
- حساب مسار حرج بسيط.
- التمييز بين اعتماد الجدولة ونقل النواتج.
ارسم الاعتماد قبل تسمية المراحل
خط العمل مجموعة مهام لها شروط واعتمادات. تسهّل المراحل الترتيب لكنها قد تفرض حواجز غير ضرورية: لا تحتاج مهمة التوثيق انتظار تغليف طويل لا يرتبط بها. ابدأ بما تستهلكه كل مهمة وما تنتجه. يضم Parcel البناء والوحدة والتغليف والتوثيق. يستهلك التغليف ناتج البناء ودليل نجاح الوحدة، بينما التوثيق مستقل. ينبغي أن يعبّر الرسم عن هذه الحقائق صراحة بدلاً من الاعتماد على أعمدة جميلة بصرياً.
افصل الزمن المنقضي عن مجموع العمل
افترض أن البناء أربع دقائق والوحدة ثلاث والتغليف دقيقتان والتوثيق ست. إذا اعتمدت الوحدة على البناء والتغليف على الوحدة، فمسار الإصدار تسع دقائق قبل انتظار المشغّل. يمكن للتوثيق العمل بالتوازي، فيصبح اكتمال الكل تسع دقائق عند توفر السعة. مجموع مدد المهام خمس عشرة دقيقة عمل، وليس زمناً منقضياً. يستثني النموذج البدء ونقل النواتج والتنافس، لذلك استخدمه لفهم الاعتماد لا لوعد تشغيلي دقيق.
duration = {"build": 4, "unit": 3, "package": 2, "docs": 6}
parents = {"build": [], "unit": ["build"], "package": ["unit"], "docs": []}
finish = {}
for job in duration:
finish[job] = duration[job] + max((finish[p] for p in parents[job]), default=0)
print(finish["package"])
print(max(finish.values()))
9
9
ترتيب الإدخال طوبولوجي عمداً. لا يعالج البرنامج ترتيباً عشوائياً ولا يكتشف الدورات؛ يجب على مخطط فعلي التحقق منهما. المدد دقائق افتراضية.
ليست حافة الجدولة نقلاً مضموناً للملفات
تختلف افتراضات مشاركة النواتج بين المنتجات. انتظار مهمة البناء لا يضمن تلقّي ملفاتها في كل نظام، ومهمتان على نظام تشغيل مسمى واحد لا تتشاركان بالضرورة نظام الملفات. حدّد اسم الناتج ومنتجه وهويته واحتفاظه وقاعدة تنزيله. عامل مساحات العمل كمؤقتة ما لم ينص المنفذ صراحة على غير ذلك. قد تبدو مهمة تغليف تقرأ ملفاً قديماً من مجلد معاد الاستخدام أسرع، لكنها تنقض بصمت عقد المصدر والناتج.
حدّد انتقال الإخفاق عمداً
يجب أن تحجب المهام المطلوبة مسار الإصدار عندما تغيب أدلتها أو تفشل. يمكن للتحليل المعلوماتي الاختياري الإبلاغ منفصلاً، مع إظهار اختياريته. التخطي والإلغاء لا يعنيان النجاح. يحتاج الرسم أيضاً استراتيجية للتشخيص النهائي: قد يستمر جمع التقرير بعد فشل الاختبار من دون جعله ناجحاً. تجنّب تجاهل الأخطاء الشامل. احتفظ بحالة الخروج الفاشلة مع سجلات وتقارير محدودة تساعد على تفسيرها.
build -> unit -> package
unit failure -> collect-test-report
docs -> documentation artifact
يراقب مسار التقرير الاختبار الفاشل ويحافظ على إخفاقه ولا يؤهل التغليف. الأسهم توضح السلوك المطلوب، ولكل منصة شروطها وقواعد نقل نواتجها.
يستهلك التوازي مورداً محدوداً
قد تتنافس المهام المستقلة على المشغلات والمعالج والذاكرة والنطاق وحدود الطلبات الخارجية. لا يفيد تقسيم اختبار عشر دقائق إلى عشر مهام إلا إذا سمح الانتظار والتهيئة والاختناق المشترك بذلك. قس انتظار الطابور منفصلاً أولاً، ثم غيّر افتراضاً واحداً وقارن مراجعات متكافئة. لا تسرّع التغليف مع إبقاء حاجز سابق غير لازم. يزيل التحسين الآمن الانتظار المهدر ويحافظ على أدلة الإصدار.
الأخطاء الشائعة وإصلاحها
لا تجد المهمة اللاحقة الملف التنفيذي.
- لماذا يحدث؟
- اختلط ترتيب الجدولة بضمان نقل الناتج.
- كيف تصلحه؟
- صرّح بناتج المنتج ومسار تنزيل المستهلك.
- كيف تتجنب تكراره؟
- راجع حواف البيانات منفصلة عن حواف التنفيذ.
أصبح الخط أبطأ بعد تقسيم كل اختبار لمهمة.
- لماذا يحدث؟
- هيمنت كلفة التهيئة وطوابير المشغلات.
- كيف تصلحه؟
- قس الانتظار والتهيئة ثم اختر حجم تقسيم مفيداً.
- كيف تتجنب تكراره؟
- قارن مراجعات ممثلة تحت سعة واقعية.
يسمح فحص أمني متخطى بالإصدار.
- لماذا يحدث؟
- فحص الشرط غياب اللون الأحمر بدلاً من وجود نجاح مطلوب.
- كيف تصلحه؟
- اشترط دليلاً ناجحاً صريحاً لكل فحص إلزامي.
- كيف تتجنب تكراره؟
- اختبر حالات الإخفاق والإلغاء والغياب والتخطي في عقد الإصدار.
اختبر فهمك
1. أصبح التوثيق اثنتي عشرة دقيقة. ما مدة مسار الإصدار والخط كله؟
اعرض الحل المشروح
يبقى مسار الحزمة تسع دقائق، ويكتمل الخط كله في اثنتي عشرة دقيقة لأن التوثيق مستقل وأطول. انتظار الإصدار للتوثيق قرار سياسة يجب أن يظهر كاعتماد صريح.
2. نجح رفع التقرير بعد فشل الاختبارات. هل يستوفي شرط الاختبار؟
اعرض الحل المشروح
لا. يثبت نجاح الرفع معالجة التقرير وتبقى نتيجة الاختبار فاشلة. افصل الحالتين واجعل بوابة الإصدار تستخدم دليل الاختبار. ينبغي أن يحسن التشخيص الرؤية دون إعادة تعريف النتيجة الأصلية.
أهم ما تعلمته
- ارسم اعتمادات الجدولة والنواتج معاً.
- حسّن المسار الحرج مع الحفاظ على الأدلة المطلوبة.