
Serpent Team

Andrew Hanna

الإجابة المختصرة: الترقية العكسية هي عملية الدمج التي تُعيد تغيير الإنتاج إلى كل فرع وبيئة أدنى في خط الإصدار لديك. وأنت تحتاجها لأن الإصلاح العاجل الذي يُطبَّق مباشرة على الإنتاج لا يوجد في أي مكان آخر، فيأتي الإصدار العادي التالي ويطمسه بصمت. والطريقة الآمنة لأتمتتها هي دمج متتالٍ، بيئة واحدة في كل مرة، يُفتح كطلب دمج لا كدفع من سكربت.
الترقية المعتادة تنقل التغيير إلى أعلى: من dev إلى
integration إلى uat إلى main. أما الترقية
العكسية فتسير في الاتجاه المقابل، إذ تأخذ ما هو موجود بالفعل في بيئة أعلى وتدمجه
نزولًا حتى تتطابق البيئات الأدنى.
هناك شيئان يجب أن ينتقلا، ومعظم الفرق تكتفي بالأول:
لأن الإصلاح العاجل يكسر الافتراض الذي بُني عليه خط إصدارك، وهو أن الإنتاج لا يستقبل إلا ما صعد عبر السلسلة. وبكسر هذا الافتراض تتبعه ثلاث مشكلات.
والتغييرات خارج المسار ليست إصلاحات عاجلة فقط. تخطيط صفحة عُدِّل في الإنتاج أثناء عطل، وقيمة قائمة أضيفت لأجل الدعم، وحقل أُنشئ لفك حصار مستخدم: كلها تحتاج الطريق نفسه للعودة.
هذا هو الجزء الذي تتجاوزه معظم الأدلة. الترقية العكسية تفشل بطرق يمكن التنبؤ بها، وخمس قواعد تمنع معظمها.
main في
uat، ثم uat في integration، ثم
integration في dev. ودمج main مباشرة في
dev يترك الفروع المتجاوَزة لتتعارض لاحقًا.
الترقية العكسية ليست مشكلة نشر، بل مشكلة نظافة فروع تظهر بعد ثلاثة أسابيع في هيئة مشكلة نشر.
main لا من dev، حتى لا يحمل الإصلاح معه شيئًا غير مُطلَق.
main. يفتح خط الإصدار
تلقائيًا طلب دمج للترقية العكسية نحو الفرع الأدنى مباشرة.
لا، واعتباره بديلًا خطأ شائع ومكلف. فالتحديث يستبدل بيئة الاختبار بنسخة من الإنتاج، وهو ما ينزل بالإصلاح فعلًا، لكنه يدمّر في طريقه كل تغيير غير مُطلَق داخل تلك البيئة. كما أن التحديثات محدودة الوتيرة: بيئة Full لا تُحدَّث إلا كل 29 يومًا (Salesforce Help)، فهي حدث مجدول لا استجابة لعطل.
استخدم التحديثات لإعادة ضبط البيانات والانحراف طويل الأمد، واستخدم الترقية العكسية لإبقاء الشيفرة والبيئات متوافقة فيما بينهما. ومعظم منصات DevOps على Salesforce تدعم هذا الشكل بصورة أو بأخرى، ومنها Copado وGearset وAutoRABIT وFlosum وBlue Canvas وSalto. والمتغير هو ما إذا كان التتابع تلقائيًا، وما إذا كان يصل في صورة طلب دمج قابل للمراجعة.
ما الفرق بين الترقية والترقية العكسية؟
الترقية تنقل التغيير صعودًا نحو الإنتاج، أما الترقية العكسية فتنقل تغييرًا موجودًا في بيئة أعلى نزولًا حتى تتوقف البيئات الأدنى عن الانحراف.
هل ينبغي أن تكون الترقية العكسية تلقائية بالكامل؟
المُشغِّل وطلب الدمج نعم. أما الدمج نفسه فيجب أن يظل خاضعًا للموافقة، لأن تعارضًا يُحَل دون مراجعة هو الطريق إلى إلغاء الإصلاح مرتين.
كيف نتعامل مع تعارض أثناء الترقية العكسية؟
حُلّه داخل فرع الترقية العكسية لصالح سلوك الإنتاج، واطلب من كاتب الإصلاح تأكيده. ولا تحُلّه أبدًا بأخذ الفرع الأدنى كما هو.
هل نحتاج الترقية العكسية إذا لم يعدّل أحد الإنتاج مباشرة؟
نعم، لكن بوتيرة أقل. فالفروع الطويلة العمر والإصدارات المتراجَع عنها وإصدارات الترقيع للحزم تضع جميعها تغييرات في البيئات الأعلى لا تملكها الأدنى.
تجد المزيد من أدلة خطوط الإصدار خطوة بخطوة في مكتبة SF Guides. وإذا كان خط إصدارك لا يفتح التتابع نيابة عنك اليوم، فابدأ بالقاعدة الثانية: درجة واحدة في كل مرة وبالترتيب. عندها تكف الترقية العكسية عن كونها المهمة التي لا يريدها أحد.
بدون التزام.