محتويات الدورة

Jenkins / الأدلة والمشاركة والسلطة / الدرس 10

الفروع المتوازية وأدلة المصفوفة

وسّع تركيبات مقصودة مع وضوح الملفات والنتائج وانتقال الفشل.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • تمييز التوازي الممكن عن سعة المنفذ المتاحة.
  • مراجعة عزل كل فرع وتغطية المصفوفة المطلوبة.

يتبع التوازي بنية الاعتماد

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

اقرأ عقد نتائج الفروع

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

groovy مقطع بنية مرحلة متوازية
stage("Format checks") {
    failFast true
    parallel {
        stage("Plain") { steps { echo "plain fixture" } }
        stage("Unicode") { steps { echo "unicode fixture" } }
    }
}

حُذف الغلاف وتخصيص الوكيل. لا تعمل فروع ولا تقدم تأكيدات تطبيق. يوضح المقطع الشكل لا توقيت Jenkins متحققاً منه.

تضاعف المصفوفة التغطية والكلفة

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

عد التركيبات والاستثناءات الصريحة

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

python توسيع مجموعة خلايا افتراضية مطلوبة
from itertools import product
all_cells = set(product(["linux", "windows"], ["plain", "unicode"]))
excluded = {("windows", "unicode")}
required = all_cells - excluded
print(len(all_cells))
print(sorted(required))
الناتج المتوقع
4
[('linux', 'plain'), ('linux', 'unicode'), ('windows', 'plain')]

يحسب تركيبات ذاكرة فقط. لا تُختبر صياغة Pipeline أو الإضافة أو أسماء النتائج أو توافق المنصات.

اعزل التعديل واجمع عمداً

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

الأخطاء الشائعة وإصلاحها

يكتب فرعان التقرير نفسه.

لماذا يحدث؟
اختلط الاسم بالعزل على القرص.
كيف تصلحه؟
افصل المسارات واجمع المخرجات المحددة لاحقاً.
كيف تتجنب تكراره؟
راجع القراءات والكتابات وأسماء الحفظ والتقارير.

تُعد خلية ملغاة بـ fail-fast ناجحة.

لماذا يحدث؟
اختلط غياب تأكيد أحمر بوجود دليل نجاح.
كيف تصلحه؟
اشترط نتيجة مقبولة صريحة لكل خلية مطلوبة.
كيف تتجنب تكراره؟
اختبر الفشل والإلغاء والغياب في الملخص.

تزيد المصفوفة تأخر التغذية.

لماذا يحدث؟
أُهملت السعة والتهيئة والنقل.
كيف تصلحه؟
قس الطابور والتنفيذ واختر أبعاداً ذات خطر واضح.
كيف تتجنب تكراره؟
قارن التغطية الموسعة والزمن معاً.

اختبر فهمك

1. يشترك فرعان في وكيل عام. هل مجلدا الناتج منفصلان تلقائياً؟

اعرض الحل المشروح

لا. لا تعزل البنية ملفات المجلد المشترك. اختر مجلدات أو تخصيصات صريحة وأسماء بلا تصادم، وراجع مجلد الاعتماد أو الذاكرة المتغير المشترك مستقلاً.

2. تفشل منصة مدعومة باستمرار. هل استثناؤها تحسين أداء؟

اعرض الحل المشروح

ليس دون قرار دعم وخطر مراجع. يغير الاستثناء عقد التغطية لا سرعة الفحص نفسه. أصلح العيب أو راجع الدعم صراحة ومرر القرار بسياسة الإصدار.

أهم ما تعلمته

  • لا تضمن البنية السعة أو عزل الملفات.
  • قارن الخلايا المرصودة بمجموعة مطلوبة صريحة.

المراجع الرسمية