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

ربط تطبيق Flutter بأنظمة الـ CI/CD باستخدام Codemagic: أتمتة الرفع لـ Google Play و App Store

ربط تطبيق Flutter بأنظمة الـ CI/CD باستخدام Codemagic: أتمتة الرفع لـ Google Play و App Store يا هلا بيك يا بشمهندس في عالم البرمجة العميق! خليني أبدأ معاك بسؤا

ربط تطبيق Flutter بأنظمة الـ CI/CD باستخدام Codemagic: أتمتة الرفع لـ Google Play و App Store
Reading Count: 3

ربط تطبيق Flutter بأنظمة الـ CI/CD باستخدام Codemagic: أتمتة الرفع لـ Google Play و App Store

يا هلا بيك يا بشمهندس في عالم البرمجة العميق! خليني أبدأ معاك بسؤال بسيط: كام مرة قضيت الليل كله صاحي، بتعمل بناء التطبيق (App Build) يدوياً، وتطلع ملف APK أو AAB، وتدخل على Google Play Console، وترفع، وتكرر نفس الحوار الناشف ده للـ App Store عشان تستفايف (TestFlight) وتتعب في شهادات التوقيع (Signing Certificates)؟ وجع دماغ صح؟

الموضوع ده بياخد ساعات من وقتك اللي ممكن تقضيه في كتابة كود نضيف أو حتى ترتاح فيه. هنا بيجي دور الـ تكامل المستمر والتسليم المستمر (CI/CD - Continuous Integration and Continuous Deployment). والنهارده هنتكلم عن واحد من أقوى وأسهل الأدوات المخصصة لتطبيقات الفلاتر وهو كودمجيك (Codemagic). هنشرح مع بعض إزاي نربط مشروعك على جيت هاب (GitHub) بـ Codemagic عشان بمجرد ما تعمل git push، التطبيق يتبني لوحده ويترفع للمتاجر من غير ما تحرك صباعك!

إيه هو الـ CI/CD وليه بنحتاجه في تطوير تطبيقات الهاتف (Mobile App Development)؟

باختصار شديد، الـ CI هو إنك كل ما تعمل تحديث للكود وترفعه على مستودع الكود (Repository) زي GitHub، السيرفر بياخد الكود ده ويجرب يعمل ليه بناء (Build) ويشغل التيستات (Tests) عشان يتأكد إن مفيش حاجة اتكسرت. أما الـ CD فهو الخطوة اللي بعدها، وهي إن الكود ده لو سليم، يتم نشره أوتوماتيكياً سواء لبيئة الاختبار أو للمتاجر الرسمية.

في فلاتر (Flutter)، الموضوع حساس شوية؛ لأنك محتاج تطلع نسختين (Android و iOS)، وكل نظام ليه موال في التوقيع الرقمي (Code Signing). هنا بتظهر أهمية أداة زي Codemagic CI/CD لأنها مصممة خصيصاً عشان تفهم بيئة فلاتر وتوفر عليك إعدادات معقدة كنت هتعملها بنفسك على سيرفرات تانية زي Jenkins أو GitHub Actions.

الخطوة الأولى: تجهيز مشروع Flutter ورفع على GitHub

أول خطوة لازم تتأكد إن مشروعك شغال تمام محلياً (Locally) ومفيش أخطاء في الـ حزمة البرمجية (Dependencies). بعد كده، هترفع الكود بتاعك على مستودع عام أو خاص (Public or Private Repository) على GitHub.

تأكد إن ملف pubspec.yaml مظبوط، وإن عندك ملف إعدادات جاهز. الأفضل دايماً إنك تفصل إعدادات البناء عن الكود, عشان السيرفر يعرف يتعامل معاها.

الخطوة الثانية: ربط حساب Codemagic بـ GitHub وإعداد المشروع

الخطوات هنا أبسط ما يمكن:

  • ادخل على موقع Codemagic وسجل دخولك باستخدام حساب GitHub بتاعك.
  • اضغط على زر Add application.
  • اختار GitHub كمنصة للمصدر (Source Control).
  • ابحث عن اسم المشروع بتاعك واختاره، وبعدين حدد إن نوع المشروع هو Flutter App.

بعد ما تختار المشروع، Codemagic هيقرا ملف codemagic.yaml لو موجود في جذور المشروع (Root directory). ولو مش موجود، تقدر تنشئه بنفسك عشان تتحكم في كل تفاصيل عملية البناء.

الخطوة الثالثة: كتابة ملف الإعدادات السحري codemagic.yaml

الملف ده هو عقل العملية كلها. بدل ما تظبط الإعدادات من واجهة الموقع، بتكتب كود يوضح للسيستم إزاي يبني التطبيق. ده مثال عملي لملف Codemagic Configuration File مبسط:


workflows:
  flutter-workflow:
    name: Flutter Workflow
    max_build_duration: 60
    instance_type: mac_mini
    environment:
      flutter: stable
      xcode: latest
    scripts:
      - name: Install dependencies
        script: |
          flutter packages pub get
      - name: Run unit tests
        script: |
          flutter test
      - name: Build AAB for Android
        script: |
          flutter build appbundle --release
    artifacts:
      - build/app/outputs/bundle/release/*.aab

الكود البسيط ده بيعمل الآتي: بيحدد نوع السيرفر (Mac Mini عشان بناء الأندرويد والآي أو إس)، بينزل الاعتماديات، بيشغل اختبارات الوحدة (Unit Tests)، وفي الآخر بيبني ملف Android App Bundle (AAB) جاهز للرفع على متجر جوجل.

الخطوة الرابعة: أتمتة النشر لمتجري Google Play و App Store

عشان ترفع التطبيق أوتوماتيكياً للمتاجر، هتحتاج تربط حسابات المطورين بتاعتك بـ Codemagic. دي خطوة أمنية مهمة جداً:

  • لأندرويد (Google Play): هتحتاج تعمل ملف Service Account JSON من Google Cloud Console وتديه صلاحيات النشر، وترفعه في إعدادات الأمان في Codemagic.
  • لآيفون (App Store): هتحتاج توفر App Store Connect API Key، وملفات التوقيع (Provisioning Profiles & Certificates)، ودي بتتحل بسهولة بفضل أدوات إدارة الشهادات التلقائية في Codemagic زي App Store Connect integration.

بمجرد إعداد البيانات دي، وتقول للـ Workflow يرفع التطبيق للمتاجر (Publishing configuration)، السيستم هياخد الملف الناتج بعد الـ Build ويرفعه فوراً كـ Internal Testing أو حتى Production حسب اختيارك!

الخاتمة ونصيحة من أخ

ربط تطبيقك بنظام CI/CD زي Codemagic مش رفاهية، ده استثمار في وقتك وراحتك النفسية كـ مبرمج فلاتر (Flutter Developer). صح, الخطوات الأولى في إعداد الشهادات ممكن تاخد منك وقت وتجرب كذا مرة لحد ما تضبط، بس العائد بعد كده رهيب. تخيل بدل ما تضيع ساعتين في كل تحديث، بتعمل git push وتقوم تشرب قهوتك وتلاقي التطبيق نزل على المتجر لوحده!

نصيحة أخيرة: ابدأ الأول برفع التطبيق لبيئة الاختبار (Testing Tracks) زي TestFlight أو Google Play Internal Testing، وتأكد إن كل حاجة تمام قبل ما تفعل النشر التلقائي للـ Production عشان تفادي أي كارثة لو في bug سقط منك في الكود.


Share

Related posts

Aug 04, 2026 • 2 min read
Reading Count: 4
ازاي تحمي تطبيق فلاتر (Flutter App) بتاعك من الهكرز وتمنع الهندسة العكسية (Reverse Engineering)؟

ازاي تحمي تطبيق فلاتر (Flutter App) بتاعك من الهكرز وتمنع الهندسة العكسية (Reverse Engineering)؟ أهل...

Aug 04, 2026 • 2 min read
Reading Count: 5
تصميم أنيميشن 3D بسيط داخل Flutter بدون استخدام محركات ألعاب

أهلاً بيك يا صديقي المبرمج في مقال جديد من سلسلة شروحات فلاتر (Flutter Tutorials) الممتعة. لو انت شغ...

Aug 04, 2026 • 2 min read
Reading Count: 4
عنوان تلقائي

يا هلا بيك يا بشمهندس في عالم تطوير الديسكتوب! أكيد, زي أي مطور فلاتر شاطر, عملت تطبيقات موبايل جامد...