CI/CD لمشاريع JavaScript: GitHub Actions من الألف إلى الياء

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا نحتاج CI/CD لمشاريع JavaScript؟

\n\n

تطوير تطبيقات JavaScript الحديثة على Node.js لا يتطلب فقط كتابة كود عالي الجودة، بل يتطلب أيضًا توصيله بشكل موثوق للمستخدمين النهائيين. الاختبار اليدوي، والبناء، والنشر ليست فقط بطيئة، بل محفوفة أيضًا بالأخطاء البشرية. هنا يأتي دور CI/CD (التكامل المستمر / النشر المستمر) - منهجية لأتمتة جميع مراحل دورة حياة البرمجيات.

\n\n

CI/CD لمشاريع JavaScript يسمح بتشغيل الاختبارات تلقائيًا مع كل دفع إلى المستودع، وبناء التطبيق، ونشره على الخادم أو في السحابة. أحد أشهر الأدوات لتنفيذ هذه المنهجية هو GitHub Actions - نظام أتمتة سير العمل المدمج في منصة GitHub.

\n\n

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

\n\n

الجزء الرئيسي: إنشاء خط أنابيب CI/CD باستخدام GitHub Actions

\n\n

1. ما هو GitHub Actions وكيف يعمل؟

\n\n

GitHub Actions هي منصة لأتمتة سير العمل (workflows) التي يتم تشغيلها استجابةً للأحداث في المستودع (push، pull request، إنشاء issue، إلخ). سير العمل هو مجموعة من الخطوات التي يتم تنفيذها على أجهزة افتراضية (runners). يمكن لكل خطوة تشغيل نصوص برمجية، أو تثبيت تبعيات، أو استدعاء خدمات خارجية.

\n\n

المفاهيم الأساسية:

\n
    \n
  • Workflow — ملف تكوين YAML، مخزّن في مجلد .github/workflows/.
  • \n
  • Event — المشغل الذي يبدأ سير العمل (مثل push أو pull_request).
  • \n
  • Job — مجموعة من الخطوات التي يتم تنفيذها على runner واحد (التبعيات، الاختبارات، البناء).
  • \n
  • Step — أمر أو إجراء فردي (action).
  • \n
\n\n

بالنسبة لمشاريع JavaScript، سنستخدم runner القياسي مع Ubuntu، لأنه يدعم Node.js بشكل افتراضي.

\n\n

2. الإعداد الأساسي: الاختبار والتحليل (Linting)

\n\n

لنبدأ بإنشاء سير عمل بسيط لاختبار وتحليل الكود. قم بإنشاء ملف .github/workflows/ci.yml في جذر مستودعك.

\n\n

مثال على تكوين لمشروع Node.js:

\n\n
name: CI for Node.js\n\non:\n  push:\n    branches: [ main, develop ]\n  pull_request:\n    branches: [ main ]\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n\n    strategy:\n      matrix:\n        node-version: [18.x, 20.x]\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v4\n\n      - name: Setup Node.js ${{ matrix.node-version }}\n        uses: actions/setup-node@v4\n        with:\n          node-version: ${{ matrix.node-version }}\n          cache: 'npm'\n\n      - name: Install dependencies\n        run: npm ci\n\n      - name: Run linter\n        run: npm run lint\n\n      - name: Run tests\n        run: npm test
\n\n

دعنا نشرح النقاط الرئيسية:

\n
    \n
  • Matrix strategy — يسمح بتشغيل الاختبارات على إصدارات متعددة من Node.js (18.x و 20.x) بالتوازي.
  • \n
  • actions/checkout — إجراء قياسي لاستنساخ المستودع.
  • \n
  • actions/setup-node — يقوم بتثبيت الإصدار المطلوب من Node.js ويتضمن التخزين المؤقت لـ node_modules لتسريع العملية.
  • \n
  • npm ci — تثبيت نظيف للتبعيات من package-lock.json (أسرع وأكثر موثوقية من npm install).
  • \n
\n\n

بعد دفع هذا الملف إلى المستودع، سيقوم GitHub Actions تلقائيًا بتشغيل الاختبارات. سترى النتيجة في قسم "Actions" في مستودعك.

\n\n

3. بناء ونشر صورة Docker

\n\n

إ

المدونات

توصيات الكتب