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

GitHub Actions / الهوية والتنسيق والحوكمة / الدرس 15

مجموعات التزامن والإلغاء وحداثة الإصدار

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

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

أهداف الدرس

  • اختيار مفتاح يمثل المورد المنسق.
  • فصل الانتظار وإلغاء الجاري وحداثة الهدف.

تنسّق المجموعة نطاقاً محدداً

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

راجع سلوك الطابور في منصتك

تصف وثائق GitHub.com المراجعة خانة انتظار افتراضية واحدة؛ يستبدل المنتظر الجديد منتظراً قائماً في المجموعة. وتصف خيار طابور أكبر بحد وقيود خاصة. تحقق من إتاحة هذه القدرات في الخدمة أو إصدار Enterprise Server الفعلي. لا يساوي ترتيب بلوغ المجموعة ترتيب مراجعات المصدر، إذ تختلف أزمنة التهيئة قبل الانتظار. لذلك لا تثبت المجموعة تنفيذ كل التزام ولا أن أحدث مصدر سيُعتمد أخيراً. اختر سياسة الانتظار وفق طبيعة العمل ولا تعامل الطابور كسجل دائم لكل انتقال مطلوب.

ألغِ التحقق المتقادم عمداً

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

yaml استبدال تحقق متقادم
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

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

أعد فحص الأهلية بعد الانتظار

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

python نمذجة حداثة وهوية طلب متسلسلين
observed_generation = 5
completed = set()
def accept(request, generation):
    global observed_generation
    if request in completed:
        return "duplicate"
    if generation < observed_generation:
        return "stale"
    observed_generation = generation
    completed.add(request)
    return "accepted"
print(accept("lab-a", 4))
print(accept("lab-b", 6))
print(accept("lab-b", 6))
الناتج المتوقع
stale
accepted
duplicate

الأجيال مدخلات سياسة افتراضية. لا يجدول البرنامج مهام ولا يحصل على قفل ولا يستدعي API ولا ينشر.

قد يترك إلغاء العميل عملاً جارياً

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

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

تحتوي كل مجموعة github.run_id.

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

يُعد القفل مانعاً لتبني القديم لاحقاً.

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

يعاد الملغى كطلب خارجي جديد فوراً.

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

اختبر فهمك

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

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

ليس بالضرورة. استخدم حد الهدف عند استقلال الموارد والسياسات ونسّق الحالة المشتركة الحقيقية منفصلة. قد يخلق العام انتظاراً زائداً ويسمح المفتاح شديد الخصوصية بتداخل خطر.

2. هل يضمن استبدال المنتظر تنفيذ كل ترحيل؟

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

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

أهم ما تعلمته

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

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