التكامل المستمر والنشر المستمر CI/CD
CI/CD مسار تلقائي يختبر كل تعديل في برنامجك ثم ينشره فور نجاح الاختبارات، فيتوقف الإطلاق عن كونه حدثًا يخشاه الجميع.
يُعرف أيضًا بـ التكامل المستمر النشر المستمر خط النشر
التعريف
ينقل CI/CD أي تعديل في برنامجك من الشخص الذي كتبه إلى الناس الذين يستخدمونه، دون أن ينفذ أحد الخطوات بيده. والاسم شقّان. فالتكامل المستمر يعني أن كل تعديل صغير يُضاف إلى النسخة الأساسية من الكود في اليوم نفسه، ليختبره جهاز فورًا. والنشر المستمر يعني أن التعديل يصبح متاحًا للناس فور نجاح تلك الاختبارات، أو جاهزًا للنشر بضغطة زر واحدة.
ومعظم الشركات جرّبت الطريقة الأخرى، حين يسهر شخص ليلة الخميس ويمشي على قائمة مطبوعة. ينسخ الملفات إلى الخادم ثم يتمنى أن تمر الليلة على خير، وهو عمل مقلق، ولذلك يتكرر نادرًا. ولأنه نادر، تحمل كل نسخة جديدة تعديلات ثلاثة أشهر دفعة واحدة. فحين يتعطل شيء صباح الجمعة، لا يعرف أحد أي تعديل من الأربعين هو السبب.
وهنا الجزء الذي يخطئ فيه الناس، لأن أغلب الفائدة لا تأتي من الأتمتة نفسها. بل تأتي من كثرة النشر التي تتيحها هذه الأتمتة. فالنسخة التي تحمل تعديلًا واحدًا سهلة الفحص وسهلة التراجع عنها، أما التي تحمل أربعين تعديلًا فهي لغز ومعه موعد نهائي. ولهذا يقضي الفريق الذي ينشر كل يوم ليالي أهدأ من الفريق الذي ينشر كل ثلاثة أشهر. والفرق هو حجم الخطوة، لا ذكاء الأداة.
وهذا المسار التلقائي، الذي يسميه الناس «خط النشر»، هو أيضًا المكان الطبيعي للفحوص التي ينساها الجميع حين تكون يدوية. تأتي الاختبارات أولًا، ومعها فحص الثغرات المعروفة في المكتبات الخارجية التي يعتمد عليها نظامك. وتضع لينكي سوفت لنظم المعلومات هذا الفحص داخل خط النشر في كل مشروع تطبيق ويب، لأن الفحص الذي يعمل حين يتذكره أحدهم هو فحص لا يعمل. ثم يحدد فريق الأمن السيبراني عندنا ما الذي يرفض خط النشر إطلاقه.
وهناك حد واحد يجب قوله بصراحة. فلا يستطيع تطبيق الهاتف أن ينزل خلال أربع دقائق، لأن آبل وجوجل تراجعان كل نسخة جديدة أولًا، وهذا يستغرق ساعات أو أيامًا. ومع ذلك يبني خط النشر التطبيق ويختبره كالعادة، وينتظر في الخطوة الأخيرة وحدها. وقبل أن توقّع أي عقد، اطلب من المورّد أن ينشر نسخة أمامك ثم يتراجع عنها وأنت تنظر. وتجيب لينكي سوفت عن ذلك بعرض حي لا بورقة، لأن الوقت الذي يستغرقه التراجع يخبرك أكثر من أي رسم توضيحي.
أسئلة حول التكامل المستمر والنشر المستمر
هل أحتاج CI/CD في مشروع صغير؟
هل يعني CI/CD أن التعديلات تُنشر دون مراجعة أحد؟
كم يجب أن يستغرق إطلاق نسخة جديدة؟
ماذا يحدث إذا تسبب الإطلاق في عطل؟
هل CI/CD هو نفسه DevOps؟
ما زلت غير متأكد كيف ينطبق هذا على مشروعك؟
أخبرنا بما تبنيه وسنجيبك بلغة واضحة.