Orbit
إرجاع النشر إلى الإصدار السابق
If a deployment breaks production, you can put an earlier build back in front of traffic in seconds without rebuilding anything. This guide covers how rollback works, how to pick the right…
إذا كسر نشر ما الإنتاج، يمكنك إعادة نسخة بناء أقدم أمام حركة المرور في ثوان دون إعادة بناء أي شيء. يغطي هذا الدليل كيفية عمل الاسترجاع، وكيفية اختيار النشر الصحيح، والاستجاعات التلقائية التي يمكن لـ Orbit تنفيذها لك، وما يجب القيام به بعد الاسترجاع.
كيفية عمل الاسترجاع
يحتفظ Orbit بالعنصر المعبأ لكل بناء ناجح. لا يعيد الاسترجاع تشغيل أمر التثبيت أو البناء: فهو يرقي عنصراً موجوداً بالفعل وتم تقديمه بالفعل، لذا فإنه يكمل في ثوان ولا يمكن أن يفشل لأي من الأسباب التي قد يفشل فيها البناء.
هذا هو السبب الوحيد للجوء إليه أولاً. الاسترجاع أسرع، وأكثر قابلية للتنبؤ بكثير، من محاولة الإصلاح للأمام بينما موقعك معطل.
الاسترجاع إلى نشر سابق
- افتح مشروعك في Orbit.
- افتح علامة التبويب Deployments.
- ابحث عن آخر نشر تعلم أنه كان جيداً.
- انقر على Roll back في تلك الصف وأكد.
يقول التأكيد بالضبط ما سيحدث: سيتم تقديم حركة المرور من البناء الأقدم على الفور، وسيتم استبدال النشر الحالي.

يمكنك أيضاً الاسترجاع من صفحة تفاصيل النشر الخاصة به، حيث يقرأ الزر Rollback to اختصار commit.
يستقبل النشر المستعاد شارة CURRENT. النشر الذي تراجعت عنه يبقى في السجل مع الحالة Rolled back.
الاسترجاع غير مدمر ولا يحتاج إلى التراجع عنه. لا يتم حذف شيء، لا يتم إعادة كتابة أي سجل، ولا يتأثر مستودع الكود الخاص بك. دفعتك الناجحة التالية إلى فرع الإنتاج تصبح ببساطة النسخة المباشرة الجديدة بالطريقة العادية.
تحديد النشر الصحيح
يعرض كل صف في علامة التبويب Deployments رسالة commit واختصار hash والفرع والحالة وموعد النشر ومن دفعها. يحمل النشر المباشر شارة CURRENT.
عادة ما تريد النشر مباشرة قبل الذي تسبب في المشكلة. شيئان يساعدانك على التأكد:
- المقارنة. افتح النشر المريب وانقر على Compare لمقارنة الفرق بينه وبين السابق: وقت البناء، حجم العنصر، حالة التخزين المؤقت، الإطار، والفرق على مستوى الملف للعنصر.
- ملاحظات النشر. أي نشر يمكن أن يحمل ملاحظة تصل إلى 500 حرف. إضافة "hotfix لخلل الدفع" أو "علم الميزة X مفعل" في الوقت لا تكلف شيئاً وتجعل السجل قابلاً للقراءة بعد أشهر، وهذا بالضبط عندما تحتاج إليه.
الاسترجاع إلى عنصر لا يسترجع متغيرات البيئة أو قواعد إعادة التوجيه أو رؤوس الاستجابة. يتم قراءة تلك في وقت الطلب أو البناء، وليست مدرجة في العنصر. إذا كان السبب في الحادثة هو تغيير في الإعدادات وليس تغيير في الكود، فإن الاسترجاع للكود لن يصلحه. توضح صفحة تفاصيل النشر الفرق بين المتغيرات التي تم حقنها في وقت البناء مقابل إعداداتك الحالية، وهي الطريقة الأسرع لتمييز الاثنين.
الاسترجاع التلقائي
يمكن لـ Orbit أن يفعل هذا لك قبل أن تلاحظ حتى. جميع الإعدادات الثلاثة موجودة في Settings.
الاسترجاع التلقائي عند الفشل
تحت Runtime، قم بتشغيل Auto-rollback on failure. إذا فشل نشر الإنتاج، يتم استعادة آخر نشر صحي تلقائياً والزوار لن يرون أي توقف. المرحلة لها مفتاح معادل خاص بها.
فحص الصحة
تحت Health check، قم بتعيين Health check path، على سبيل المثال / أو /api/health. بعد كل نشر إنتاج، يجلب Orbit تلك المسار. إذا لم يعد استجابة 2xx في غضون 15 ثانية، يتم استعادة آخر نشر صحي.
اختبارات الدخان
تحت Smoke tests، اسرد ما يصل إلى 10 مسارات مفصولة بفواصل، على سبيل المثال /,/blog,/api/health. بعد كل نشر ناجح، يرسل Orbit GET لكل واحد ويسجل النجاح أو الفشل. إذا فشل أي منها وكان الاسترجاع التلقائي مفعلاً، يتم استعادة النشر السابق. تظهر النتيجة على صفحة النشر مثل Smoke tests passed أو عدد الأخطاء، ويقول Triggered rollback عندما تسبب فيه.
فحص الصحة على مسار يمارس بالفعل قاعدة البيانات الخاصة بك يستحق أكثر بكثير من واحد على الصفحة الرئيسية. نشر معطل يخدم صفحة رئيسية مخزنة مؤقتاً سيمرر فحص / وسيفشل على واحد حقيقي.
الاسترجاع مقابل قفل النشر
إذا لم تكن مستعداً للاسترجاع لكنك تريد إيقاف أي شيء جديد يذهب مباشرة بينما تحقق، قفل النشرات بدلاً من ذلك:
- افتح المشروع.
- انقر على Lock deploys.
- أضف سبباً، على سبيل المثال "التحقيق في مشكلة الإنتاج".
يتم تخطي النشرات المُطلقة بالدفع بصمت، واللافتة تقرأ Production deploys are locked مع سببك. النشرات اليدوية تعمل بعد ذلك، وهذا مقصود: القفل يوقف النشرات العرضية، وليس الإصلاح الذي تشحنه. انقر على Unlock deploys لرفعه.
القفل والاسترجاع يعملان بشكل جيد معاً. استرجع أولاً لاستعادة الخدمة، ثم قفل حتى لا يتم التراجع عن دمج روتيني أثناء التشخيص.
ترقية المرحلة إلى الإنتاج
إذا كان لديك بيئة مرحلة، يمكنك وضع بناء مرحلة مختبر في الإنتاج دون دفع أي شيء.
- افتح نظرة عامة على المشروع واعثر على قسم Staging.
- إذا كانت المرحلة متقدمة على الإنتاج، يظهر Promote to production.
- انقر عليه وأكد.
اقرأ التأكيد بعناية، لأن هناك سلوكي ترقية مختلفين في Orbit وهما غير قابلين للتبديل. الترقية من نظرة عامة على المشروع تؤدي إلى بناء إنتاج طازج في نفس commit، باستخدام متغيرات بيئة الإنتاج وأوامر بناء الإنتاج. العنصر المرحلة لا يتم إعادة استخدامه. ترقية نشر مرحلة محدد من صفحة تفاصيله تصرح بوضوح بأن بناء المرحلة يذهب مباشرة دون إعادة بناء. إذا اختلفت متغيرات بيئة المرحلة والإنتاج، فإن المسار الأول سينتج عنصراً مختلفاً عن الذي اختبرته.
يمكن لـ Orbit أيضاً أن ترقي لك. Auto-promote staging في Settings ترقي المرحلة إلى الإنتاج بعد عدد من ساعات المرحلة الصحية مع نجاح اختبارات الدخان، مع الفحص كل 15 دقيقة.
بعد الاسترجاع
أصلح المشكلة الأساسية في مستودع الكود الخاص بك وادفع commit جديد. يؤدي هذا إلى بناء عادي يصبح النسخة المباشرة الجديدة. إذا قفلت النشرات، قم بفتح قفلها أولاً، أو سيتم تخطي الدفع.
علامة التبويب Activity للمشروع تسجل الاسترجاع جنباً إلى جنب مع كل شيء آخر حدث، لذلك يوجد سجل تدقيق من استرجع ماذا ومتى.
ما الذي يحد من مدى العودة بعيداً
الاسترجاع يحتاج إلى العنصر الموجود بعد. إعدادان يتحكمان في ذلك:
- نافذة سجل النشر للخطة الخاصة بك: 7 أيام على Launch، 30 على Liftoff، 90 على Apex.
- إعداد Artifact retention للمشروع، الذي يحتفظ بعدد من العنصر الناجحة لكل بيئة، من 10 إلى 500، الافتراضي 50.
يتم الاحتفاظ بعنصر النشر المباشر الحالي دائماً بغض النظر عن أي منهما.
إذا نشرت عدة مرات في اليوم، فإن عدد العنصر هو الحد الذي ستصل إليه أولاً، وليس عدد الأيام. يمكن أن تكون خمسون نشراً أسبوع واحد فقط. رفع Artifact retention بدلاً من اكتشاف السقف خلال حادثة.