العنوان: عودة GitHub Actions للعمل ولكن الإصلاحات اليدوية مطلوبة
عادت خدمة GitHub Actions للعمل في تمام الساعة 02:04 بالتوقيت العالمي المنسق (UTC) في 7 أغسطس. وقد خلّف الانقطاع سلسلة من أحداث الـ push والـ pull-request التي لم تُنفذ قط، مما يضطر المطورين إلى إعادة تشغيل تلك العمليات يدويًا.
تظهر صفحة الحالة الآن باللون الأخضر، ولكن أي سير عمل (workflow) كان من المفترض أن يبدأ أثناء الانقطاع ظل متوقفًا. وبما أن GitHub لا يمكنه إعادة تشغيل المحفزات (triggers) الفائتة تلقائيًا، يجب على الفرق دفع التزام (commit) جديد، أو تحديث طلب السحب (pull request)، أو النقر على Re-run jobs في واجهة المستخدم. كما يحتاج مستخدمو Actions Runner Controller مفتوح المصدر إلى التحقق من عدم توقف الـ runner pods في حالة خمول.
ما الذي حدث ولماذا يمثل ذلك أهمية؟
تُشغل GitHub Actions مسارات التكامل المستمر (CI pipelines) لملايين المستودعات (repos). وعندما تتوقف، تظل تغييرات الكود معطلة، ولا تُنفذ مجموعات الاختبار، وتتأخر عمليات النشر. في 7 أغسطس، توقفت الخدمة عن معالجة كل من أحداث الـ push (الالتزامات الجديدة) وأحداث الـ pull-request (تحديثات المراجعة)، وهما المحفزان الأكثر شيوعًا في الـ CI.
كيفية استعادة مسارات العمل الخاصة بك
- دفع التزام جديد (Push a new commit) – أي تغيير في الفرع (branch) سيؤدي إلى تفعيل محفز الـ push مرة أخرى.
- تحديث طلب السحب (Update the pull request) – أضف تعليقًا، أو غيّر العنوان، أو ادفع المزيد من الالتزامات لإعادة تفعيل سير عمل الـ PR.
- إعادة تشغيل سير العمل يدويًا (Rerun the workflow manually) – تظهر واجهة مستخدم Actions الآن زر "Re-run jobs" لكل عملية تشغيل فاشلة.
إذا كنت تستخدم runners مستضافة ذاتيًا (self-hosted runners) عبر Actions Runner Controller، فقم بفحص الـ runner pods. قد تظل بعضها في حالة خمول بعد عودة الخدمة؛ لذا قم بإعادة تشغيلها أو إعادة نشرها.
التداعيات على الفرق
- فقدان الإنتاجية – ينتظر المطورون ملاحظات (feedback) تصل عادةً في غضون دقائق.
- تأخير الإصدارات – أي مسار عمل يتحكم في عملية الإصدار قد يؤدي إلى تأجيل مواعيد التسليم.
- الأعباء التشغيلية الإضافية – يجب على الفرق مراجعة عمليات التشغيل الأخيرة، وتحديد الفجوات، وتنفيذ الخطوات اليدوية المذكورة أعلاه، مما يستهلك وقتًا كان مخصصًا لتطوير الميزات.
الخلاصة: يوضح هذا الانقطاع أنه حتى خدمات الـ CI الناضجة قد تفقد بعض المهام، وأن إعادة التشغيل التلقائي ليست مضمونة. قم بتضمين خطوات الاستعادة اليدوية في أدلة الاستجابة للحوادث (incident-response playbooks) الخاصة بك، وراقب تحركات GitHub القادمة نحو معالجة أحداث أكثر مرونة.
