التكامل المستمر والتسليم/النشر المستمر
CI/CD
الشرح المبسط
الشرح التقني المتقدم
يُعد مصطلح CI/CD العمود الفقري لثقافة التطوير والعمليات (DevOps) في بيئات لينكس (Linux Environments). يهدف هذا النهج إلى أتمتة دورة حياة تطوير البرمجيات بالكامل، مما يقلل من التدخل البشري ويحد من الأخطاء الناتجة عن عمليات الدمج والنشر اليدوية.
المفاهيم الأساسية لتقنية CI/CD
ينقسم هذا النهج إلى مرحلتين أساسيتين تعملان بتناغم تام داخل النظام (System):
التكامل المستمر (Continuous Integration): هي عملية دمج تغييرات الشيفرة المصدرية (Source Code) بانتظام وبشكل آلي في مستودع مركزي (Repository). يقوم الخادم فوراً بتشغيل عمليات البناء (Build) والاختبارات الآلية للتحقق من سلامة الأكواد وعدم تعارضها مع النظام الحالي.
التسليم والنشر المستمر (Continuous Delivery / Deployment): المرحلة الثانية التي تتولى أخذ الأكواد التي اجتازت الاختبارات وتجهيزها للإطلاق، أو نشرها مباشرة إلى خوادم الإنتاج (Production Servers) بحيث تصبح متاحة للمستخدم النهائي فوراً.
إعداد وكيل التنفيذ (Runner) في خوادم لينكس
لتشغيل مسار العمل (Pipeline)، نحتاج إلى أداة تعمل كخدمة خلفية (Daemon) تستمع للتغييرات في المستودع وتنفذ الأوامر المطلوبة. من أشهر هذه الأدوات في عالم مفتوح المصدر وكيل جيت لاب (GitLab Runner).
أمر تحديث المستودعات وتثبيت الوكيل على التوزيعات المبنية على دبيان (Debian):
sudo apt-get update && sudo apt-get install gitlab-runner
بعد التثبيت، نستخدم الأمر gitlab-runner register لربط الخادم بالمستودع، مما يؤدي إلى توليد ملف إعدادات (Configuration File) يتم حفظه عادة في المسار /etc/gitlab-runner/config.toml.
يمر مسار العمل الآلي عادة بالمراحل التالية لتحقيق أفضل النتائج:
- مرحلة البناء (Build): تجميع الكود المصدري وتحويله إلى حاويات دُوكر (Docker Containers) لتسهيل نقله وتشغيله.
- مرحلة الاختبار (Test): تشغيل أوامر برمجية لفحص الكود، مثل الأمر
make test، لضمان استقرار التطبيق. - مرحلة النشر (Deploy): نقل الحاويات أو الملفات النهائية إلى الخوادم الحية لتعمل عليها بشكل مستقر.
ملاحظة ختامية: الصورة الكبرى (نصيحة احترافية)
لضمان أقصى درجات الأمان في خوادم لينكس، تأكد دائماً من تشغيل أدوات CI/CD باستخدام مستخدم بصلاحيات محدودة (Non-root User)، وقم بتخزين كلمات المرور والمفاتيح السرية كمتغيرات بيئة (Environment Variables) مشفرة بدلاً من كتابتها كنصوص صريحة داخل ملفات مسار العمل.