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

GitHub Actions / الأحداث والتنفيذ وحدود البيانات / الدرس 5

needs والمصفوفات وسلوك الإخفاق

وسّع تركيبات اختبار مقصودة واحفظ الدليل الإلزامي خلال الإخفاق.

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

أهداف الدرس

  • حساب المصفوفة ومراجعة الإضافة والاستثناء.
  • شرح الاعتماد والإيقاف المبكر والتوازي والتجريبي.

تعبّر الاعتمادات عن الأهلية

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

ينشئ التوسيع تنفيذات متعددة

تعرف المصفوفة تركيبات مثل نظامي تشغيل ووضعي تجهيز، فتنتج أربعة تنفيذات قبل الحذف والإضافة. اربط كل بُعد بخطر واضح، مثل اختلاف الأنظمة أو دعم وقت التشغيل أو توافق التنسيق. تؤدي إضافة أبعاد آلياً إلى مضاعفة الكلفة وقد لا تضيف تغطية مفيدة. راجع التركيبات الموسعة لا تعريف YAML وحده. يحسب البرنامج المحلي حاصل ضرب مجموعتين ويحذف زوجاً معلناً غير مدعوم في النموذج. يشرح ذلك حساب التركيبات، لكنه لا يحاكي جميع قواعد دمج include وexclude الخاصة بـ Actions، والتي يجب مراجعتها في مرجعها.

python عد مصفوفة افتراضية
from itertools import product
all_pairs = list(product(["linux", "windows"], ["plain", "unicode"]))
selected = [p for p in all_pairs if p != ("windows", "unicode")]
print(len(all_pairs))
print(selected)
الناتج المتوقع
4
[('linux', 'plain'), ('linux', 'unicode'), ('windows', 'plain')]

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

الإلغاء والاختيارية ضابطان منفصلان

تضبط strategy.fail-fast إلغاء التنفيذات المنتظرة أو الجارية عند إخفاق مصفوفة وفق السلوك الموثق. وتسمح continue-on-error بإخفاق تنفيذ محدد دون الأثر نفسه لإخفاق تنفيذ مطلوب. أما max-parallel فتضع سقفاً للتزامن. تحل هذه الضوابط مشاكل مختلفة فلا تنسخها معاً دون فهم. يمكن أن يكون وقت تشغيل تجريبي معلوماتياً، لكن وقت التشغيل المدعوم المطلوب يبقى حاكماً لنتيجة الإصدار. قد يقلل الإلغاء الكلفة، لكنه قد يمنع جمع دليل تشخيصي من تركيبات أخرى، لذلك وازن الحاجة إلى النتائج مع سرعة الإيقاف.

سمّ الأبعاد وحدّ التزامن

يشغّل المقطع وضعين مسميين للتجهيز ويضع حداً صريحاً للتزامن. ويترك fail-fast بقيمة false كي يستطيع كلا التنفيذين الإبلاغ. قد يناسب ذلك المقارنة التشخيصية، وليس قاعدة عامة لكل مصفوفة كبيرة. يطبع أمر run الوضع المختار فقط، ولذلك لا يقدمه الدرس بوصفه اختباراً ذا معنى للتطبيق. في مهمة فعلية يُمرر الوضع كمدخل متحقق منه إلى اختبار تجهيز كامل، وتُحفظ نتيجة منفصلة لكل تنفيذ. كما يحتاج المقطع غلاف مهمة يختار مشغّلاً وصدفة مناسبين قبل أن يصبح إعداداً متكاملاً.

yaml مقطع مهمة مصفوفة
strategy:
  fail-fast: false
  max-parallel: 2
  matrix:
    mode: [plain, unicode]
steps:
  - name: Show fixture mode
    env:
      PARCEL_MODE: ${{ matrix.mode }}
    run: printf "%s\n" "$PARCEL_MODE"

يحتاج الغلاف مشغّلاً وصدفة مناسبين. تستلم كل نسخة وضعاً. لا يختبر المقطع Parcel ولا ينفذ مصفوفة على GitHub.

اجمع النتائج مع حفظ الهوية

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

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

يلغي فشل تجريبي أدلة مطلوبة.

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

تتصادم رفوع المصفوفة باسم واحد.

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

تُعد max-parallel ضمان مشغلات.

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

اختبر فهمك

1. ثلاثة أنظمة وتشغيلان: كم مهمة قبل الترشيح؟

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

ست. قد تحذف الاستثناءات أو تعدل الإضافات وتزيد وفق القواعد. راجع الناتج ولا تفترض بقاء حاصل الضرب بعد القواعد.

2. هل يجعل تجميع تقرير فشل المصفوفة المطلوبة ناجحاً؟

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

لا. يحفظ كل نتيجة ويمنع قرار الإصدار عند فشل أو غياب المطلوب. يثبت نجاح التقرير عمل التجميع لا نجاح كل تركيبة.

أهم ما تعلمته

  • راجع مجموعة التركيبات المطلوبة الناتجة.
  • تختلف الاختيارية والإلغاء والسقف والسعة.

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