I’m weak at CI/CD

من بداية السنة الميلادية احتجت اسوي مجموعة تعديلات على بعض التطبيقات asp.net (core) وفي هذي الفترة القصيرة كانت عملية النشر للتعديلات مقرفة وتاخذ وقت, فكنت انقل ملفات واكواد عملية البناء build للسيرفر واعمل اعادة تشغيل للتطبيق 🤷🏻‍♂️

في عملية التطوير والتكامل المستمر CI بمجرد عمل commit لاي تعديل لبرانش البرودكشن او release فالمفروض يكون عندك اتمتة بحيث تصير عملية الـ build بشكل تلقائي وفي حال نجاحها يتم نقل المخرجات بشكل تلقائي ايضاً CD لمكان عمل التطبيق بدون اي مجهود اضافي من المستخدم.

وانا ما فكرت من قبل اسوي اتمتة كاملة لهذي الفكرة, بعد الي صار معي في هالفتره قلت ابدأ اعمل حاجة بسيطة من خلال visual studio و دوكر بدون ادوات مخصصة لعمليات CI/CD لأني اصلا مشغل التطبيق على حاوية فبيكون اختيار جيد لي كبداية 🙄

وش سويت؟

اول شي لازم يكون على جهازك docker engine ولازم تضيف دعم دوكر للمشروع في visual studio بالضغط كلك يمين على المشروع و ثم اضافة ثم docker support, الي بيصير الحين انه يتم عمل ملف dockerfile فيه كامل معلومات بناء المشروع ونسخة اطار العمل وهذا الملف خاص لانشاء الـ image.

بعد الانتهاء من تعديل الكود اختار publish في visual studio واعمل بروفايل لمستودع Docker Hub او azure الي تبيه, وبعد اكمال الخطوات اضغط publish في هذه الاثناء وش بيصير؟ الفجوال ستوديو راح ينشيء image تحتوي على التطبيق (باستخدام dockerfile الي تم انشائه في الخطوة السابقه) ثم راح يتصل بالمستودع ويرفع النسخة عليه 🥱

الان النسحة موجودة على المستودع يصير باقي نروح للسيرفر الي مشغل عليه التطبيق واعمل تحديث للحاوية بضغطة زر او كتابة الامر docker run -d xxx imageName:latest

في فرق؟

في اول مرة تحتاج تخصيص المشروع وانشاء البروفايل لكل تطبيق عندك وبعدها بيكون في فرق على الاقل لشخص مثلي ماعندي اي اتمتة نهائياً فصار الي علي بعد اي تعديل اعمل خطوتين أول شي ببلش من visual studio وثم من السيرفر اعمل تحديث للحاوية.

صحيح اني بعيد عن الـ best practice لكن الان الشغل افضل واسرع من قبل, وان شاء الله مستقبلاً اجرب كل خصائص azure devops و اسوي pipeline واتعلم كيف الناس شغالة بشكل احترافي في هذا المجال.

سبحان الله وبحمده سبحان الله العظيم.