0Pricing
React Academy · درس

‏CI/CD لـ React باستخدام GitHub Actions

أتمتة خطوات الفحص واختبار وبناء ونشر المشروع في سير عمل GitHub Actions عند كل عملية دفع

‏CI/CD لـ React باستخدام GitHub Actions درس مجاني في React Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

ما هي GitHub Actions؟

GitHub Actions منصة CI/CD مدمجة في GitHub. عرّف سير العمل في ملفات YAML ضمن .github/workflows/، بحيث تعمل عند أحداث الدفع أو طلبات السحب أو وفق جدول زمني.

سير عمل CI أساسي

سير عمل minimal يثبّت التبعيات، ويشغّل فحص التنسيق، ويجري الاختبارات عند كل عملية دفع وطلب سحب.

# .github/workflows/ci.yml
name: CI

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

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'
      - run: npm ci
      - run: npm run lint
      - run: npm test -- --coverage

التخزين المؤقت لـ node_modules

خزّن ~/.npm مؤقتًا، وهو ذاكرة npm المؤقتة وليس node_modules، لتسريع تثبيت التبعيات. يتولى actions/setup-node ذلك باستخدام الخيار cache.

- uses: actions/setup-node@v4
  with:
    node-version: 20
    cache: 'npm' # caches ~/.npm based on package-lock.json hash

خطوة البناء

أضف خطوة بناء بعد الاختبارات للتحقق من تجميع المشروع دون أخطاء.

- name: Build
  run: npm run build

# For Next.js — catch TypeScript errors:
- name: Type Check
  run: npx tsc --noEmit

النشر إلى Vercel عند الدمج

انشر إلى Vercel عند الدفع إلى main باستخدام Vercel CLI ضمن سير العمل.

- name: Deploy to Vercel
  env:
    VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
    VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
    VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
  run: |
    npm install -g vercel
    vercel pull --yes --environment=production --token=$VERCEL_TOKEN
    vercel build --prod --token=$VERCEL_TOKEN
    vercel deploy --prebuilt --prod --token=$VERCEL_TOKEN

النشر إلى S3 عند الدمج

زامن ناتج البناء مع S3 وأبطل التخزين المؤقت في CloudFront بعد نجاح البناء على main.

- name: Deploy to S3
  if: github.ref == 'refs/heads/main'
  env:
    AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
    AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
  run: |
    aws s3 sync dist/ s3://my-bucket/ --delete
    aws cloudfront create-invalidation --distribution-id ${{ secrets.CF_ID }} --paths "/*"

اختبارات Playwright E2E في CI

شغّل اختبارات Playwright E2E في CI بعد البناء. ثبّت ملفات المتصفحات الثنائية باستخدام خطوة مخصصة.

- name: Install Playwright Browsers
  run: npx playwright install --with-deps chromium

- name: Run E2E Tests
  run: npx playwright test

- uses: actions/upload-artifact@v4
  if: failure()
  with:
    name: playwright-report
    path: playwright-report/

مهام المصفوفة المتوازية

استخدم استراتيجية المصفوفة لتشغيل الاختبارات بالتوازي عبر إصدارات متعددة من Node.js أو عبر بيئات متعددة.

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [18, 20, 22]
    steps:
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}

إدارة الأسرار

خزّن القيم الحساسة، مثل مفاتيح API ورموز النشر، باعتبارها GitHub Secrets عبر المسار (المستودع ← Settings ← Secrets). ويمكنك الوصول إليها في سير العمل باستخدام ${{ secrets.MY_SECRET }}.

الخطوات الشرطية

استخدم الشروط if: لتشغيل الخطوات على فروع محددة أو عند أحداث طلبات السحب أو بعد نجاح الخطوات السابقة فقط.

- name: Deploy
  if: github.ref == 'refs/heads/main' && github.event_name == 'push'
  run: npm run deploy

شارات الحالة

أضف شارة حالة البناء إلى README لعرض حالة CI بسرعة.

<!-- README.md -->
![CI](https://github.com/myorg/myrepo/actions/workflows/ci.yml/badge.svg)

تحقق سريع

ما ميزة GitHub Actions التي تشغّل المهمة نفسها بالتوازي عبر إعدادات متعددة، مثل إصدارات Node.js المختلفة؟

مراجعة

عرّف سير عمل CI في ملفات YAML ضمن .github/workflows/. استخدم actions/setup-node مع cache: 'npm' لتسريع التثبيت. أضف خطوات فحص التنسيق والتحقق من الأنواع والاختبار والبناء. انشر بشكل مشروط عند عمليات الدفع إلى فرع main. خزّن الأسرار في GitHub Secrets واستخدم عمليات بناء بالمصفوفة للاختبار عبر إصدارات متعددة.

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

هل درس «‏CI/CD لـ React باستخدام GitHub Actions» مجاني؟

نعم — نص درس «‏CI/CD لـ React باستخدام GitHub Actions» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «‏CI/CD لـ React باستخدام GitHub Actions»؟

أتمتة خطوات الفحص واختبار وبناء ونشر المشروع في سير عمل GitHub Actions عند كل عملية دفع تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «‏CI/CD لـ React باستخدام GitHub Actions»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. النشر إلى Vercel: دون إعداد وعناوين URL للمعاينة
  2. استضافة React SPA على AWS S3 وCloudFront
  3. وضع تطبيق React/Next.js داخل Docker
  4. ‏CI/CD لـ React باستخدام GitHub Actions
← العودة إلى React Academy