ربط تطبيق 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، التطبيق يتبني لوحده ويترفع للمتاجر من غير ما تحرك صباعك!
Table of contents [Show]
- 1 إيه هو الـ CI/CD وليه بنحتاجه في تطوير تطبيقات الهاتف (Mobile App Development)؟
- 2 الخطوة الأولى: تجهيز مشروع Flutter ورفع على GitHub
- 3 الخطوة الثانية: ربط حساب Codemagic بـ GitHub وإعداد المشروع
- 4 الخطوة الثالثة: كتابة ملف الإعدادات السحري codemagic.yaml
- 5 الخطوة الرابعة: أتمتة النشر لمتجري Google Play و App Store
- 6 الخاتمة ونصيحة من أخ
إيه هو الـ 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 سقط منك في الكود.