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 -->
تحقق سريع
ما ميزة 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- النشر إلى Vercel: دون إعداد وعناوين URL للمعاينة
- استضافة React SPA على AWS S3 وCloudFront
- وضع تطبيق React/Next.js داخل Docker
- CI/CD لـ React باستخدام GitHub Actions