عملية تكامل CI/CD لتطبيق Flutterعملية تكامل CI/CD لتطبيق Flutter

تخيل أنك تدفع تغييرات جديدة إلى الكود في GitHub، وبعد دقائق فقط يصلك إشعار:

“تم بناء التطبيق بنجاح، ورفع الإصدار الجديد إلى المتجر.”

سحر؟ لا، إنها تكامل CI/CD في Flutter — واحدة من أقوى تقنيات التطوير الحديثة التي تختصر ساعات العمل اليدوي إلى دقائق من الأتمتة الذكية.

في هذا المقال، سنتعلم كيف تجعل عملية بناء ونشر تطبيق Flutter تلقائية بالكامل، باستخدام أدوات احترافية مثل GitHub Actions وCodemagic وFastlane.


ما هو CI/CD؟

🔹 CI (Continuous Integration)
يعني “الدمج المستمر”، أي أن كل تغيير جديد في الكود يُدمج ويُختبر تلقائيًا بمجرد رفعه إلى المستودع (Repository).

🔹 CD (Continuous Deployment / Delivery)
هو “النشر المستمر”، أي أن التطبيق يُبنى ويُنشر تلقائيًا إلى المتجر أو بيئة الاختبار دون تدخل يدوي.

🎯 الهدف: تقليل الأخطاء البشرية، وتسريع دورة التطوير والنشر.


أولًا: إعداد GitHub Actions لتطبيق Flutter

1️⃣ أنشئ ملف إعداد

في مشروعك، أنشئ المسار التالي:

.github/workflows/flutter-ci.yml

ثم أضف المحتوى التالي:

name: Flutter CI/CD

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

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: 🔄 Checkout code
        uses: actions/checkout@v3

      - name: 🧰 Set up Flutter
        uses: subosito/flutter-action@v2
        with:
          flutter-version: '3.24.0'

      - name: 📦 Install dependencies
        run: flutter pub get

      - name: 🧪 Run tests
        run: flutter test

      - name: 🏗️ Build Android release
        run: flutter build appbundle

الآن، كل مرة تدفع فيها كودًا جديدًا إلى فرع main، سيقوم GitHub تلقائيًا بـ:

  1. تنزيل Flutter.
  2. تثبيت الحزم.
  3. تشغيل الاختبارات.
  4. بناء تطبيقك في وضع الإصدار.

💡 يمكنك لاحقًا توسيع هذا الملف ليرفع التطبيق تلقائيًا إلى Play Console أو TestFlight.


ثانيًا: استخدام Codemagic لأتمتة Flutter بالكامل

منصة Codemagic.io هي الأداة الرسمية التي صُممت خصيصًا لتطبيقات Flutter.
تتيح لك:

  • بناء التطبيق لكل المنصات (Android, iOS, Web, Desktop).
  • توقيع التطبيق تلقائيًا باستخدام مفاتيح مشفرة.
  • رفع الإصدارات مباشرة إلى Google Play وApp Store.

الخطوات الأساسية:

  1. اربط حسابك على GitHub أو GitLab.
  2. اختر مشروع Flutter.
  3. فعّل قنوات النشر التي تريدها (Play Store أو TestFlight).
  4. حمّل ملفات keystore وcertificate المشفرة.
  5. اضغط “Start Build”.

وسيبدأ Codemagic ببناء التطبيق وتوزيعه تلقائيًا في كل تحديث! 🚀

⚙️ يمكنك أيضًا تخصيص إعداداتك في ملف codemagic.yaml داخل المشروع.


ثالثًا: أتمتة النشر باستخدام Fastlane

إذا أردت مزيدًا من التحكم، استخدم Fastlane — أداة مفتوحة المصدر تسمح بالنشر التلقائي إلى المتاجر.

🔹 إعداد Fastlane لـ Android:

داخل مجلد:

android/

نفّذ:

fastlane init

سيُنشئ مجلد fastlane يحتوي على ملفات:

  • Fastfile
  • Appfile

يمكنك بعدها تحديد مهمة (lane) للنشر:

lane :deploy do
  gradle(task: "bundleRelease")
  upload_to_play_store(track: "production")
end

🔹 لـ iOS:

من مجلد ios/:

fastlane init

ثم أضف:

lane :release do
  build_app(scheme: "Runner")
  upload_to_app_store
end

بعدها، كل ما عليك هو تنفيذ:

fastlane deploy

وسيُرفع تطبيقك إلى Google Play أو App Store تلقائيًا ✨


رابعًا: مزايا استخدام CI/CD في Flutter

الميزةالفائدة
🧩 أتمتة البناءتوفير الوقت والمجهود عند كل تحديث
✅ اكتشاف الأخطاء مبكرًاتشغيل الاختبارات قبل الدمج
🚀 نشر سريعالتحديثات تصل للمستخدمين تلقائيًا
🔒 توقيع آمنباستخدام أسرار مشفرة داخل المنصة
📈 توحيد الفريقجميع المطورين يعملون ضمن نفس خط النشر

نصائح احترافية

  • استخدم secrets داخل GitHub أو Codemagic لتخزين كلمات المرور والمفاتيح بأمان.
  • فعّل إشعارات Slack أو البريد لتصلك تقارير البناء.
  • أضف خطوة اختبار الأداء (flutter test --coverage) قبل النشر.
  • لا ترفع مفتاح التوقيع (keystore) في المستودع العام أبدًا!

الخلاصة

تكامل CI/CD هو ما يميز المشاريع الاحترافية عن المشاريع التجريبية.
فبدلًا من القلق في كل مرة تنشر فيها تحديثًا، اجعل الآلة تعمل نيابةً عنك.

بمجرد إعداد GitHub Actions أو Codemagic أو Fastlane، ستضمن أن تطبيقك يُبنى ويُوزع بأمان وسرعة ودون أخطاء بشرية.

وفي الجزء القادم من السلسلة، سنتحدث عن أنماط البناء في Flutter (Build Modes) — ما الفرق بين Debug وProfile وRelease، ومتى تستخدم كل منها أثناء التطوير أو النشر.


By احمد علي

مطور تطبيقات هواتف ذكية باستخدام Flutter، وصانع محتوى تقني يكتب عن الذكاء الاصطناعي والبرمجة وتطورات التكنولوجيا الحديثة. أسعى لتبسيط الأفكار المعقدة ومشاركة خبرتي مع المهتمين بالمجال.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *