🌐 Detecting your location…
📢 Advertisement — Configure AdSense in Appearance → Customize → AdSense Settings

دليل إجراءات GitHub CI/CD 2026: أتمتة الاختبار والنشر

⏱️2 min read  ·  286 words
GitHub Actions CI/CD Guide 2026: Automate Testing and Deployment

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

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

  • سير العمل:ملف YAML في.github/workflows/
  • الحدث:الزناد (الدفع، العلاقات العامة، الجدول الزمني، دليل)
  • الوظيفة:مجموعة من الخطوات التي تعمل على عداء
  • الخطوة:أمر أو إجراء فردي
  • عداء:جهاز افتراضي حيث يتم تشغيل مهمتك (Ubuntu، Windows، macOS)

سير العمل الأول: اختبار الدفع

# .github/workflows/test.yml
name: Test

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

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.12'

      - name: Install dependencies
        run: |
          pip install -r requirements.txt

      - name: Run tests
        run: pytest --cov=. --cov-report=xml

      - name: Upload coverage
        uses: codecov/codecov-action@v4

بناءات المصفوفة (اختبار الإصدارات المتعددة)

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ['3.11', '3.12', '3.13']

    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
      - run: pip install -r requirements.txt && pytest

النشر إلى الإنتاج على العلامة

name: Deploy

on:
  push:
    tags: ['v*']

jobs:
  deploy:
    runs-on: ubuntu-latest
    environment: production

    steps:
      - uses: actions/checkout@v4

      - name: Build Docker image
        run: |
          docker build -t myapp:${{ github.ref_name }} .
          docker tag myapp:${{ github.ref_name }} registry.example.com/myapp:latest

      - name: Push to registry
        run: |
          echo ${{ secrets.REGISTRY_TOKEN }} | docker login registry.example.com -u ci --password-stdin
          docker push registry.example.com/myapp:latest

      - name: Deploy via SSH
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: deploy
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            docker pull registry.example.com/myapp:latest
            docker compose up -d

تبعيات التخزين المؤقت (إنشاءات أسرع)

      - name: Cache pip
        uses: actions/cache@v4
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}

      - name: Cache node_modules
        uses: actions/cache@v4
        with:
          path: node_modules
          key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}

استخدام الأسرار

قم بتخزين مفاتيح واجهة برمجة التطبيقات في إعدادات GitHub > الأسرار والمتغيرات > الإجراءات. الوصول إلى سير العمل باستخدام${{ secrets.MY_KEY }}. لا تتم طباعة الأسرار أبدًا في السجلات.

      - name: Send deploy notification
        run: |
          curl -X POST ${{ secrets.SLACK_WEBHOOK }} \
            -H 'Content-type: application/json' \
            --data '{"text": "Deployed ${{ github.ref_name }}"}'

الخلاصة

تلغي إجراءات GitHub الحاجة إلى بنية تحتية منفصلة لـ CI/CD. ابدأ بسير عمل اختباري بسيط، وأضف تصميمات المصفوفة، ثم قم بالترقية إلى النشر التلقائي الذي يتم تشغيله بواسطة العلامات. تعمل تخفيضات التخزين المؤقت على إنشاء أوقات بنسبة 50-80٪.

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇬🇧 English🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা