🐙 CI/CD احترافي

GitHub Actions للنشر التلقائي — CI/CD متكامل في 4 خطوات

كل Push إلى GitHub ينشر تطبيقك تلقائياً على غيمة. مع اختبارات تلقائية، Preview Deployments لكل Pull Request، ونشر متعدد البيئات. كل هذا مجاناً.

ما هو CI/CD ولماذا تحتاجه؟

🤖 CI/CD = Continuous Integration / Continuous Deployment

باختصار: بدل ما تنشر تطبيقك يدوياً كل مرة، GitHub Actions ينشر تلقائياً مع كل Push. الفوائد: (1) توفير الوقت — لا حاجة للنشر اليدوي، (2) تقليل الأخطاء — اختبارات تلقائية تمنع نشر كود معطوب، (3) سرعة أكبر — التحديثات تصل للمستخدمين في ثوانٍ، (4) تعاون أفضل — كل Pull Request له معاينة خاصة.

🎉 لا تريد تعقيد GitHub Actions؟

غيمة توفر تكاملاً مدمجاً مع GitHub بدون أي إعداد. فقط اربط المستودع من لوحة التحكم — والنشر التلقائي يعمل فوراً. بدون YAML، بدون Secrets، بدون تعقيد. للمطورين الذين يريدون تحكماً كاملاً — تابع قراءة هذا الدليل.

إعداد GitHub Actions — 4 خطوات فقط

1

احصل على API Key من غيمة

لوحة تحكم غيمة → Settings → API Keys → Generate New Key. انسخ المفتاح — سيظهر مرة واحدة فقط. احتفظ به في مكان آمن.

2

أضف المفتاح إلى GitHub Secrets

في مستودع GitHub الخاص بك: Settings → Secrets and variables → Actions → New repository secret. الاسم: GHAYMAH_API_KEY، القيمة: المفتاح الذي نسخته. ⚠️ لا تضع المفتاح في الكود أبداً!

3

أنشئ ملف workflow

في مستودعك، أنشئ: .github/workflows/deploy.yml

name: Deploy to Ghaymah

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Deploy to Ghaymah
        uses: ghaymah-systems/deploy-action@v1
        with:
          api-key: ${{ secrets.GHAYMAH_API_KEY }}
          app-name: my-app
4

ارفع التغييرات — وشاهد السحر!

git add .github/workflows/deploy.yml
git commit -m "Add GitHub Actions deployment"
git push origin main

اذهب إلى تبويب Actions في مستودع GitHub — ستشاهد النشر يعمل تلقائياً! 🎉

وصفات متقدمة لـ CI/CD

🧪 تشغيل الاختبارات قبل النشر

امنع نشر الكود المعطوب بإضافة الاختبارات:

jobs:
  test-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'
      
      - name: Install & Test
        run: |
          npm ci
          npm test
          npm run lint
      
      - name: Deploy to Ghaymah
        if: success()  # ينشر فقط إذا نجحت الاختبارات
        uses: ghaymah-systems/deploy-action@v1
        with:
          api-key: ${{ secrets.GHAYMAH_API_KEY }}

🌿 Preview Deployments لكل Pull Request

on:
  pull_request:
    branches: [main]

jobs:
  preview:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ghaymah-systems/deploy-action@v1
        with:
          api-key: ${{ secrets.GHAYMAH_API_KEY }}
          app-name: preview-pr-${{ github.event.number }}
          preview: true
          
      - name: Comment PR with preview URL
        uses: actions/github-script@v7
        with:
          script: |
            github.rest.issues.createComment({
              ...context.repo,
              issue_number: context.issue.number,
              body: `🚀 Preview: https://preview-pr-${context.issue.number}.ghaymah.app`
            })

🏗️ نشر متعدد البيئات (Staging + Production)

# .github/workflows/deploy-staging.yml
on:
  push:
    branches: [develop]
jobs:
  deploy-staging:
    # ... نفس الخطوات مع app-name: my-app-staging

# .github/workflows/deploy-production.yml
on:
  push:
    branches: [main]
jobs:
  deploy-production:
    # ... نفس الخطوات مع app-name: my-app

نصائح احترافية لـ CI/CD

🔑

أمان المفاتيح أولاً

استخدم GitHub Secrets دائماً. لا تضع API Keys في الكود أو ملفات workflow. استخدم ${{ secrets.KEY_NAME }} للإشارة إليها.

⏱️

سرّع البناء بـ Caching

استخدم actions/cache لتخزين node_modules أو طبقات Docker. البناء يصبح أسرع 5-10 مرات.

📋

راقب حالة النشر

أضف Badge في README: [![Deploy](https://github.com/user/repo/actions/workflows/deploy.yml/badge.svg)](https://github.com/user/repo/actions)

أسئلة شائعة عن GitHub Actions والنشر التلقائي

كيف أربط GitHub Actions بغيمة للنشر التلقائي؟

هل GitHub Actions مجاني؟

كيف أضيف اختبارات تلقائية قبل النشر؟

كيف أنشئ بيئة تجريبية (Staging) منفصلة عن الإنتاج؟

ارفع كودك — ودع الباقي علينا

GitHub Actions + غيمة = نشر تلقائي كامل. جربه مجاناً 30 يوماً.

ابدأ الآن 🚀