أساسيات CI/CD في Linux: Build, Test, Deploy بشكل عملي
بعد تعلم Docker، الخطوة الطبيعية في DevOps هي أتمتة دورة التسليم عبر CI/CD.
الهدف: كل تغيير في الكود يمر بخطوات موحدة وسريعة بدل النشر اليدوي العشوائي.
ما هو CI/CD ولماذا مهم؟
- تقليل أخطاء النشر اليدوي
- تسريع تسليم الميزات والإصلاحات
- رفع جودة الكود عبر اختبارات تلقائية
الفرق بين CI وCD
| المفهوم | التركيز |
|---|---|
| CI | دمج الكود + Build + Test تلقائي |
| CD | تسليم/نشر التغييرات بطريقة آمنة ومتكررة |
Pipeline أساسي في Linux/DevOps
Checkout: جلب الكود من GitLint: فحص جودة الكودTest: تشغيل الاختباراتBuild: بناء artifact أو Docker imageDeploy: نشر على staging/production
مثال Flow عملي من Git إلى الإنتاج
- Developer يدفع commit إلى branch
- CI يشغل الاختبارات تلقائيًا
- إذا نجحت، يتم بناء image وإرسالها للregistry
- CD ينشر النسخة على بيئة staging ثم production
أدوات CI/CD الشائعة
- GitHub Actions
- GitLab CI/CD
- Jenkins
- CircleCI
الأداة أقل أهمية من منطق pipeline نفسه.
مثال YAML مبسط لـ CI Pipeline
stages:
- test
- build
- deploy
test:
script:
- npm ci
- npm test
build:
script:
- docker build -t myapp:$CI_COMMIT_SHA .
deploy:
script:
- ./deploy.sh
when: manual
ربط CI/CD مع Docker
docker build -t registry.example.com/myapp:$COMMIT_SHA .
docker push registry.example.com/myapp:$COMMIT_SHA
هذا النمط يجعل النشر يعتمد على image versioned بدل ملفات مبعثرة.
أفضل ممارسات CI/CD للمبتدئ
- اجعل الاختبارات شرطًا قبل النشر
- افصل بين staging وproduction
- استخدم secrets manager بدل وضع الأسرار في الكود
- احتفظ بسجل deploy واضح (who/what/when)
استراتيجية Rollback عند فشل النشر
# مثال عام:
kubectl rollout undo deployment/myapp
# أو إعادة نشر image سابقة مستقرة
لا تكتمل أي Pipeline بدون خطة rollback واضحة.
أخطاء شائعة في تطبيق CI/CD
- النشر المباشر دون اختبارات
- دمج build وdeploy في خطوة واحدة بلا ضوابط
- تسريب secrets في logs
- عدم وجود rollback plan
تمرين عملي: تصميم Pipeline لمشروع بسيط
- حدد أوامر test لمشروعك
- أضف خطوة build (مثلا Docker image)
- أضف deploy إلى staging فقط
- أضف شرط manual قبل production
إذا استطعت كتابة pipeline بهذا التسلسل، فأنت تفهم أساس CI/CD بشكل صحيح.
FAQ: أسئلة شائعة حول CI/CD Basics
ما المقصود بـ CI/CD؟
CI/CD هي ممارسات أتمتة لدمج الكود واختباره ونشره بسرعة وبشكل متكرر وآمن.
ما الفرق بين CI وCD؟
CI يركز على دمج الكود واختباره تلقائيا، بينما CD يركز على تجهيز أو تنفيذ النشر تلقائيا.
ما أهم مراحل Pipeline الأساسية؟
المراحل الأساسية غالبا: lint/build/test ثم package أو image build ثم deploy مع تحقق بعد النشر.