شرح خطوط أنابيب CI/CD مع GitHub Actions

DevOps2026-09-12TryQuickToolBox

لقد قمت للتو بدفع commit والآن تقوم يدويًا بتشغيل الاختبارات وبناء التطبيق ورفع الملفات إلى الخادم. هذا يعمل، لكنه بطيء وعرضة للخطأ ولا يتوسع. هنا يأتي دور خطوط أنابيب CI/CD.

في هذا الدليل، سنشرح مفاهيم CI/CD ونوضح لك كيفية بناء خط أنابيب حقيقي باستخدام GitHub Actions. في النهاية، ستفهم كيفية أتمتة الاختبار والبناء والنشر لأي مشروع.

ما هو CI/CD؟

CI (التكامل المستمر) هو ممارسة اختبار ودمج تغييرات الكود تلقائيًا في فرع مشترك. كل عملية دفع (push) تؤدي إلى تشغيل عملية بناء واختبار، مما يكتشف مشكلات التكامل مبكرًا.

CD (التسليم/النشر المستمر) يوسع CI من خلال تحضير تطبيقك تلقائيًا (ونشره اختياريًا) إلى الإنتاج. التسليم المستمر يعني أن الكود جاهز دائمًا للنشر؛ النشر المستمر يعني أنه يتم نشره تلقائيًا.

معًا، يشكل CI/CD خط أنابيب: سلسلة من الخطوات الآلية التي تنقل الكود من الـ commit إلى الإنتاج.

لماذا استخدام GitHub Actions لـ CI/CD؟

GitHub Actions هي منصة CI/CD مدمجة في GitHub. إنها مجانية للمستودعات العامة وتقدم دقائق سخية للمستودعات الخاصة. الفوائد الرئيسية:

المفاهيم الأساسية لـ GitHub Actions

قبل كتابة أول سير عمل لك، افهم هذه المصطلحات:

المصطلح الوصف
Workflow عملية آلية محددة في ملف YAML تحت .github/workflows/.
Event محفز يبدأ سير العمل (مثل push، pull_request).
Job مجموعة من الخطوات التي تعمل على نفس runner. تعمل المهام بالتوازي افتراضيًا.
Step مهمة واحدة داخل المهمة. يمكنها تشغيل أمر أو استخدام إجراء.
Action وحدة كود قابلة لإعادة الاستخدام (مثل actions/checkout) يمكن تضمينها في خطوة.
Runner جهاز افتراضي ينفذ المهام (Ubuntu، Windows، macOS).

بناء أول خط أنابيب CI لك

لنقم بإنشاء سير عمل CI أساسي لمشروع Node.js. سيقوم بتشغيل الاختبارات عند كل عملية دفع وطلب سحب إلى الفرع الرئيسي.

أنشئ .github/workflows/ci.yml:

name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [18.x, 20.x]

    steps:
    - uses: actions/checkout@v4
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v4
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm ci
    - run: npm test

سير العمل هذا:

  1. يتم تشغيله عند عمليات الدفع وطلبات السحب إلى main.
  2. يشغل مهمة تسمى test على أحدث runner Ubuntu.
  3. يستخدم مصفوفة للاختبار ضد Node.js 18 و 20.
  4. يقوم بسحب الكود، وإعداد Node، وتثبيت التبعيات، وتشغيل الاختبارات.

قم بدفع هذا الملف وراقب علامة تبويب Actions. سترى مهمتين متوازيتين (واحدة لكل إصدار Node). إذا فشل أي اختبار، يفشل سير العمل ويقوم GitHub بإخطارك.

إضافة النشر المستمر

CI رائع، لكن CD هو حيث تتألق الأتمتة. لنقم بتوسيع سير العمل للنشر إلى خادم بعد نجاح الاختبارات على الفرع الرئيسي.

سنضيف مهمة deploy تعتمد على test وتعمل فقط عند عمليات الدفع إلى main.

  deploy:
    needs: test
    if: github.ref == 'refs/heads/main' && github.event_name == 'push'
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Deploy to server
      uses: appleboy/ssh-action@v1.0.0
      with:
        host: ${{ secrets.SSH_HOST }}
        username: ${{ secrets.SSH_USER }}
        key: ${{ secrets.SSH_KEY }}
        script: |
          cd /var/www/myapp
          git pull origin main
          npm ci --production
          pm2 restart myapp

النقاط الرئيسية:

هذا النمط يعمل مع العديد من أهداف النشر: SSH، سجلات Docker، المنصات السحابية (AWS، Vercel، Netlify)، أو Kubernetes.

أفضل الممارسات لـ CI/CD مع GitHub Actions

تصحيح أخطاء سير العمل الفاشل

عندما يفشل سير العمل، يعرض GitHub السجلات لكل خطوة. تشمل المشكلات الشائعة:

يمكنك أيضًا تمكين تسجيل التصحيح عن طريق تعيين أسرار المستودع ACTIONS_STEP_DEBUG إلى true.

الأسئلة الشائعة

ما الفرق بين CI و CD؟

CI يؤتمت اختبار ودمج تغييرات الكود. CD يؤتمت تسليم أو نشر تلك التغييرات إلى بيئة. CI يضمن جودة الكود؛ CD يضمن وصوله إلى المستخدمين بسرعة وموثوقية.

هل GitHub Actions مجاني؟

GitHub Actions مجاني للمستودعات العامة. للمستودعات الخاصة، تحصل على بدل شهري من الدقائق المجانية (مثل 2,000 دقيقة للحسابات المجانية) وتدفع مقابل الاستخدام الإضافي. كما أن runners المستضافة ذاتيًا خيار أيضًا.

هل يمكنني استخدام GitHub Actions لمشاريع غير GitHub؟

نعم، يمكن لـ GitHub Actions تشغيل أي أدوات سطر أوامر. يمكنك استخدامه لبناء ونشر المشاريع المستضافة في مكان آخر، طالما أن الكود على GitHub أو تستخدم إجراءات لجلبها.

هل أنت مستعد لتبسيط CI/CD الخاص بك؟ ابدأ بأتمتة اختباراتك باستخدام GitHub Actions. للحصول على طريقة سريعة لتحليل سجلات النشر، جرب محلل سجلات Nginx لاكتشاف الأخطاء ومشكلات الأداء بعد كل عملية نشر.