
سمعت قبل كده عن CI & CD؟ خلينا النهارده ورقة وقلم وهنتكلم عن أول مصطلح منهم وهو ال Continues Integration (CI).
دايما واحنا شغالين في بناء مشروع برمجي كبير بندور علي طرق تساعدنا في نشر المشروع بشكل أسرع ونفس الوقت بكفاءه عالية. بشكل بسيط عايزين نبدأ Pipeline
بإننا ندمج الكود اللي كتبناه مع الكود الرئيسي للمشروع بشكل سريع ونفس الوقت نضمن الكفاءة.
ما هي ال Pipeline ؟
ببساطه هي مجموعه من الخطوات - Processes - بنمشي عليها علشان نبدأ نطلع منتج نهائي يقدر المستخدم يشوفه. بيكون غالبًا بداية الProcess دي هو الكود بتاعك من بداية ال Pull Request اللي بتعمله لحد ما نوصل لمنتج تقدر تشغله والمستخدم يقدر يشوفه (يبقي الPipeline هو كود بيدخل مجموعه من ال Steps علشان يحصله build
لمنتج نهائي).
ما هو الهدف من ال Continues Integration؟
الهدف منه إننا عايزين نعمل دمج للتغيرات اللي بتتعمل علي الكود بشكل منتظم بحيث نكتشف أي مشكلة تحصل بشكل سريع ونفس الوقت نضمن الكفاءة.
كيف تعمل ال Contiunous Integration ؟
-
كتابة الكود: البداية بتكون عند المبرمج إنه يبدأ يكتب كود أو يعدل علي كود موجود وبيقوم المبرمج بعمل اختبار الكود والتأكد إنه بيقوم بوظيفته بشكل صحيح.
-
نشر التعديلات: بعدها بيقوم المبرمج بنشر التغيرات اللي بتحصل علي ال
Version Control
. -
اختبار الكود: بعد كده بيتم عمل اختبار للكود بشكل آلي -
Automated Testing
-علشان نتاكد إنه شغال مظبوط مهما كانت الظروف. -
دمج الكود: لما بيتم اختبار الكود بيتم بعد كده دمج الكود مع الكود الرئيسي للمشروع.
مميزات ال Contiunous Integration
-
زيادة سرعة تطوير وبناء المشروع الخاص بيك: بدل ما تستني لآخر لحظة علشان تكتشف المشاكل,
CI
بيساعدك تعرفها من بدري. -
ضمان ان التطبيق خالي بنسبه كبيره من المشاكل: بسبب اختباره في اكتر من ظرف وده هيقلل لخفض التكاليف اللي هنتحتاجها لاصلاح التطبيق.
-
خليك واثق ان التطبيق اللي انت نشرته مستقر بشكل كبير: عشان كل تغيير بيتم اختباره كويس جدا
أشهر الادوات اللي تساعدك تنفذ CI في مشروعك
- . Jenkins: أكتر أداة معروفة في مجال
CI
.Jenkins
هو open source وبيوفر إمكانية عملautomate
لكل عمليات البناء والتستينج للكود، وكمان بيسمح بدمج الكود بشكل آلي مع الكود الأصلي في الrepository
. - CircleCI: بتوفر دعم كامل لل CI و CD مع إمكانية الدمج مع
GitHub
وBitbucket
. بتتميز بسرعتها وبتوفر إمكانية عملcontainers
للتستينج.
وغيرهم كتير , زي:
- TeamCity
- Bitbucket Pipelines
- Travis CII
- Azure DevOps
- GitHub Actions
في النهاية, CI
ده جزء مهم جدُا في عالم البرمجة الحديثة علشان يساعد الفرق تشتغل بكفاءة وتسرع في العملية بتاعت التطوير بتاعتهم. وبكده نكون قدرنا نضمن إن المنتج النهائي هيكون علي أعلي مستوي من الكفاءة والاستقرار.