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

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

الأحداث والمراجع وهوية المصدر المسحوب

اعرف الحدث المنشئ والمراجعة التي تقرؤها المهمة فعلاً.

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

أهداف الدرس

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

يختار الحدث السياق

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

سجّل الهوية الثابتة مع الاسم

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

يختلف الرأس عن الحالة المدمجة

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

text ثلاث هويات مترابطة
proposal head: contributor change by itself
merge result: contributor change combined with a target state
release candidate: identified output from the intended trusted path

فئات مفاهيمية لا تجزئات التزام مختلقة. تحدد إعدادات الحدث والسحب والدمج وبيانات التشغيل الهويات الفعلية.

اقرأ جمع المرشحات بعناية

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

yaml مقطع إعلان أحداث
on:
  pull_request:
    branches: [main]
  workflow_dispatch:
    inputs:
      fixture:
        description: Synthetic fixture name
        required: true
        type: choice
        options: [parcel-a, parcel-b]

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

تحقق من السلطة منفصلة

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

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

يُتوقع أن يطابق مرشح الطلب فرع الرأس.

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

يفحص تجاوز السحب مراجعة أخرى بصمت.

لماذا يحدث؟
افتُرض أن الحدث يحدد الشجرة بلا شرط.
كيف تصلحه؟
راجع repository وref وسجّل الهوية الفعلية.
كيف تتجنب تكراره؟
اربط الدليل بالمصدر المختبر فعلاً.

يُوثق main في نسخة متفرعة كمصدر إصدار.

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

اختبر فهمك

1. ثبت رأس الطلب وتقدم الهدف. هل تبقى نتيجة الدمج حديثة؟

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

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

2. تتيح قائمة يدوية production. هل اختيارها يخوّل النشر؟

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

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

أهم ما تعلمته

  • سجّل الحدث وهوية السحب معاً.
  • اختيار الحدث وتفويض الإصدار ضابطان منفصلان.

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