I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

أتمتة مشاريع لارافيل: دليلك الشامل لعمل CI/CD Pipeline احترافي باستخدام GitHub Actions

أتمتة مشاريع لارافيل: دليلك الشامل لعمل CI/CD Pipeline احترافي باستخدام GitHub Actions هل تعبت من الروتين اليومي الممل؟ تخلصت من Bug في الكود، عملت Push، وبعدين

أتمتة مشاريع لارافيل: دليلك الشامل لعمل CI/CD Pipeline احترافي باستخدام GitHub Actions
Reading Count: 298

أتمتة مشاريع لارافيل: دليلك الشامل لعمل CI/CD Pipeline احترافي باستخدام GitHub Actions

هل تعبت من الروتين اليومي الممل؟ تخلصت من Bug في الكود، عملت Push، وبعدين دخلت على السيرفر (Server) بإيدك عشان تعمل Pull، وتعمل run للـ migrations، وتمسح الكاش، وتكتشف في الآخر إن في Test وقعت منك؟ كل ده بيضيع وقتك كمبرمج وممكن يخليك تغلط غلطات مكلفة. الحل في عالم الـ DevOps هو الـ CI/CD Pipeline، والنهاردة هنتعلم إزاي نعمل "أتمتة" (Automation) كاملة لمشاريع لارافيل (Laravel) باستخدام GitHub Actions.

يعني إيه CI/CD ومين المستفيد؟

الـ CI/CD اختصار لـ Continuous Integration و Continuous Deployment. ببساطة، هي دورة حياة برمجية بتخلي الكود بتاعك يمر باختبارات (Automated Tests) بمجرد ما تعمل Push، وإذا كله تمام، بيترفع للسيرفر أوتوماتيكياً. ده بيوفر عليك "وجع القلب" وبيخليك تركز في كتابة كود نضيف مش في التكرار الممل.

خطوة 1: إعداد الـ GitHub Actions

في مشروع لارافيل، الـ GitHub Actions بتشتغل عن طريق ملفات بتتحط في مسار .github/workflows/. هننشئ ملف جديد وليكن اسمه deploy.yml. الملف ده هو اللي هيحكم العملية كلها.

ده مثال لملف Workflow بيعمل Test للمشروع قبل ما يرفع أي حاجة:


name: Laravel CI/CD
on:
  push:
    branches: [ main ]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.2'
      - name: Install Dependencies
        run: composer install --prefer-dist --no-progress
      - name: Run Tests
        run: php artisan test

خطوة 2: أتمتة الـ Deployment

بعد ما اتأكدنا إن الـ Tests شغالة، عايزين نبعت الكود للسيرفر. الطريقة الأكثر شيوعاً هي استخدام الـ SSH. تقدر تستخدم Action جاهزة زي appleboy/ssh-action عشان تنفذ أوامر على السيرفر بتاعك.


  deploy:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to Server
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /var/www/my-laravel-app
            git pull origin main
            composer install --no-dev --optimize-autoloader
            php artisan migrate --force
            php artisan config:cache
            php artisan view:cache

خطوة 3: التعامل مع الـ Secrets بذكاء

اوعى تحط بيانات السيرفر أو الـ Database passwords جوه الكود بتاعك! GitHub بيوفر خاصية الـ Secrets في إعدادات الـ Repository. روح على Settings ثم Secrets and variables، وضف الـ SERVER_HOST والـ SSH_PRIVATE_KEY هناك. ده بيخلي الـ Pipeline بتاعك آمن (Secure) بنسبة 100%.

نصيحة من أخ لمبرمج زميل

بص يا بطل، الـ DevOps مش بس أدوات، دي "عقلية". في الأول الموضوع هيبان إنه معقد وبياخد وقت، لكن بمجرد ما تظبط الـ Pipeline بتاعك مرة واحدة، هتحس براحة نفسية مش طبيعية. نصيحتي ليك: ابدأ بـ Pipeline بسيط بيعمل Test بس، وبعدين طوره لـ Deployment، ومع الوقت هتلاقي نفسك بقيت متمكن من أدوات الـ Cloud والـ Infrastructure. مجال الـ Web Development بيتطور بسرعة، والناس اللي بتعرف تعمل "أتمتة" هي اللي قيمتها بتزيد في سوق العمل.


Share

Related posts

Jul 24, 2026 • 1 min read
Reading Count: 5
إزاي تبني أنظمة PHP تكسر الدنيا وتتحمل ضغط رهيب باستخدام نمط الـ CQRS Pattern؟

إزاي تبني أنظمة PHP تكسر الدنيا وتتحمل ضغط رهيب باستخدام نمط الـ CQRS Pattern؟ أهلاً بيك يا بشمهندس...

Jul 24, 2026 • 1 min read
Reading Count: 2
عنوان تلقائي

أهلاً بيك يا صديقي المبرمج في مقال جديد. خلينا نتفق في البداية على حاجة: كلنا كـ مبرمجين ويب (Web De...

Jul 22, 2026 • 1 min read
Reading Count: 12
هل Swoole و FrankenPHP يمثلان نهاية خوادم PHP التقليدية؟

معرفات الأقسام المختارة: 1, 4, 3 هل Swoole و FrankenPHP يمثلان نهاية خوادم PHP التقليدية؟ يا هلا بيك...