CI/CD لمشاريع JavaScript: GitHub Actions

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

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

ابدأ الدورة
```html

مقدمة إلى CI/CD و GitHub Actions لجافا سكريبت

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

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

أساسيات GitHub Actions: الهيكل والتركيب

يعمل GitHub Actions بناءً على ملفات YAML، التي تُخزَّن في دليل .github/workflows داخل مستودعك. يحدد كل ملف من هذه الملفات سير عمل (workflow) واحدًا أو أكثر، والتي يتم تشغيلها بناءً على أحداث معينة: push، pull request، إنشاء إصدار (release)، إلخ.

الهيكل الأساسي لسير العمل يشمل:

  • name — اسم خط الأنابيب (pipeline)؛
  • on — الحدث الذي يشغل التنفيذ؛
  • jobs — مجموعة من المهام التي يتم تنفيذها بشكل تسلسلي أو متوازي؛
  • steps — الخطوات داخل كل مهمة (أوامر، إجراءات).

لننظر إلى مثال بسيط لمشروع Node.js:

name: Node.js CI

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

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm test

في هذا المثال، نستخدم الإجراءات (actions) المدمجة: actions/checkout لاستنساخ المستودع و actions/setup-node لتثبيت الإصدار المطلوب من Node.js. الأمر npm ci يقوم بتثبيت التبعيات بدقة وفقًا لملف package-lock.json، بينما يقوم npm test بتشغيل الاختبارات.

إعداد الاختبارات والفحص البرمجي (Linting)

يجب أن يتضمن خط أنابيب CI/CD عالي الجودة لمشروع جافا سكريبت التحقق من مطابقة الكود للمعايير والاختبار التلقائي. لننظر إلى مثال متقدم باستخدام أدوات شائعة: ESLint للفحص البرمجي، Jest للاختبارات، و Prettier لتنسيق الكود.

سنضيف التبعيات اللازمة إلى المشروع:

npm install --save-dev eslint jest prettier eslint-config-prettier

سننشئ ملف الإعدادات .eslintrc.json:

{
  "env": {
    "node": true,
    "es2021": true,
    "jest": true
  },
  "extends": ["eslint:recommended", "prettier"],
  "parserOptions": {
    "ecmaVersion": "latest",
    "sourceType": "module"
  },
  "rules": {
    "no-console": "warn",
    "semi": ["error", "always"]
  }
}

الآن سنقوم بتحديث ملف سير العمل:

name: Lint and Test

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

jobs:
  quality:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Run linter
        run: npx eslint .

      - name: Check formatting
        run: npx prettier --check .

      - name: Run tests
        run: npm test

      - name: Upload test coverage
```                

المدونات

توصيات الكتب