GitHub Actions للواجهة الأمامية: lint وtest وbuild
اكتب ملف workflow بصيغة YAML يثبّت الاعتماديات، ويشغّل ESLint، وينفّذ اختبارات Jest، ويبني التطبيق مع كل pull request
GitHub Actions للواجهة الأمامية: lint وtest وbuild درس مجاني في Frontend Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Frontend Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Frontend Academy 4 دروس في المجموع.
لماذا نستخدم CI للواجهة الأمامية؟
تشغّل عملية التكامل المستمر اختباراتك وأدوات linting وعملية build عند كل push وpull request. وتكتشف التراجعات قبل وصولها إلى الفرع الرئيسي. وهي ضرورية لأي فريق يضم أكثر من مطوّر واحد.
أساسيات GitHub Actions
تكون Workflows عبارة عن ملفات YAML في .github/workflows/. ويحتوي كل workflow على jobs تُشغَّل بواسطة triggers مثل push وpull_request وschedule.
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20' }
- run: npm ci
- run: npm testتخزين الاعتماديات مؤقتًا
خزّن node_modules مؤقتًا، أو ذاكرة التخزين المؤقت لـ pnpm أو yarn، لتجنب إعادة التثبيت في كل تشغيل. يوفر setup-node دعمًا مدمجًا للتخزين المؤقت.
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm' # or 'yarn' or 'pnpm'مهمة Lint
شغّل عمليات فحص ESLint وPrettier. واجعل عملية build تفشل عند وجود أخطاء.
lint:
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 run format:checkمهمة الاختبار
شغّل Vitest أو Jest. وأخرج تقارير التغطية لتوفير رؤية أوضح.
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 test -- --coverage
- uses: codecov/codecov-action@v4
with:
files: ./coverage/lcov.infoمهمة Build
أنشئ حزمة الإنتاج. وارفعها كعنصر artifact لتستخدمها مهام النشر اللاحقة.
build:
runs-on: ubuntu-latest
needs: [lint, test]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20', cache: 'npm' }
- run: npm ci
- run: npm run build
- uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
retention-days: 7المهام المتوازية
يمكن تشغيل lint والاختبارات وفحص الأنواع بالتوازي؛ إذ يشغّل Actions كل مهمة على runner مستقل. استخدم needs: لفرض الترتيب، مثل تشغيل build بعد lint والاختبارات.
فحص الأنواع
أضف مهمة مخصصة لفحص الأنواع: tsc --noEmit. فهي تكتشف أخطاء TypeScript قبل وقت التشغيل.
typecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20', cache: 'npm' }
- run: npm ci
- run: npx tsc --noEmitالاختبار باستخدام Matrix
شغّل مهمة الاختبار باستخدام إصدارات متعددة من Node أو أنظمة تشغيل متعددة بالتوازي.
test:
strategy:
fail-fast: false
matrix:
node: [18, 20, 22]
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: ${{ matrix.node }} }
- run: npm ci && npm testالخطوات الشرطية
استخدم if: لتشغيل الخطوات وفق شروط محددة، مثل تشغيلها على الفرع الرئيسي فقط.
- name: Deploy to staging
if: github.ref == 'refs/heads/main'
run: npm run deploy:stagingالأسرار والمتغيرات
خزّن مفاتيح API والرموز المميّزة في أسرار المستودع (الإعدادات → الأسرار). يمكنك الوصول إليها عبر secrets.NAME. لا ترفع الأسرار إلى المستودع مطلقًا.
- run: npm run deploy
env:
DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}قواعد حماية الفروع
في الإعدادات → الفروع، اشترط نجاح سير عمل CI قبل السماح بدمج التغييرات في main. وبالاقتران مع المراجعات المطلوبة، تُعد هذه الحماية القياسية للفرق.
تحقّق سريعًا
ما الغرض من cancel-in-progress: true في كتلة التزامن ضمن سير عمل GitHub Actions؟
مراجعة: GitHub Actions للواجهة الأمامية
يوجد YAML الخاص بسير العمل في .github/workflows/. تُشغَّل المهام عند push أو PR. خزّن node_modules مؤقتًا عبر setup-node. المهام المعتادة: lint وtypecheck وtest وbuild. شغّل المهام بالتوازي واستخدم needs لترتيبها. استخدم matrix لاختبار إصدارات متعددة. خزّن الأسرار عبر إعدادات المستودع. تتطلب حماية الفروع نجاح CI قبل الدمج. استخدم cancel-in-progress لتجنّب عمليات التشغيل المكررة.
الأسئلة الشائعة
هل درس «GitHub Actions للواجهة الأمامية: lint وtest وbuild» مجاني؟
نعم — نص درس «GitHub Actions للواجهة الأمامية: lint وtest وbuild» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Frontend Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Frontend Academy 4 دروس في المجموع.
ماذا ستتعلم في «GitHub Actions للواجهة الأمامية: lint وtest وbuild»؟
اكتب ملف workflow بصيغة YAML يثبّت الاعتماديات، ويشغّل ESLint، وينفّذ اختبارات Jest، ويبني التطبيق مع كل pull request تتمرن على Frontend Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Frontend Academy؟
لا تُشترط خبرة سابقة. Frontend Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «GitHub Actions للواجهة الأمامية: lint وtest وbuild»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Frontend Academy هذا؟
نعم. كل درس في Frontend Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- GitHub Actions للواجهة الأمامية: lint وtest وbuild
- النشر إلى Vercel وNetlify وCloudflare Pages
- متغيرات البيئة في CI
- فحوصات Lighthouse الآلية