CI/CD (Continuous Integration / Continuous Delivery) هي ممارسة البناء والاختبار والتسليم الآلي للتطبيق مع كل تغيير في الكود. وفقًا لـ Statista (2025)، 80% من فرق التطوير المحمول تستخدم CI/CD في عملها. تتناول هذه المقالة أدوات CI الشائعة وFastlane لأتمتة البناء المحمول، بالإضافة إلى Canary Release وFeature Flags.
الخلاصة
Continuous Integration هو أساس أتمتة CI/CD للتطبيقات المحمولة. إنها ممارسة يدمج فيها كل مطور كوده في مستودع مشترك عدة مرات في اليوم. بعد كل push، يقوم خادم CI تلقائيًا ببناء المشروع وتشغيل الاختبارات. إذا فشلت الاختبارات، يعتبر البناء مكسورًا ويصلح الفريق المشكلة فورًا. CI يمنع موقف «إنه يعمل على جهازي» حيث يكسر كود أحد المطورين كود آخر.
Build Pipeline — سلسلة من الخطوات التي يتم تنفيذها مع كل push: فحص الكود → اختبارات الوحدة → بناء APK/IPA debug → اختبارات التكامل → بناء release. يتم تشغيل كل خطوة فقط بعد نجاح الخطوة السابقة. يتم حفظ نتائج البناء — APK وIPA وAAB وتقارير الاختبار — وتكون متاحة للتنزيل.
Continuous Delivery — يتم بناء الكود واختباره تلقائيًا، لكن الشخص يقرر ما إذا كان سيتم الإصدار للإنتاج. Continuous Deployment — كل بناء ناجح يتم إصداره تلقائيًا للإنتاج. للتطبيقات المحمولة، يتم استخدام CD (التسليم للمتاجر) عبر TestFlight أو Internal Testing بشكل أكثر شيوعًا، حيث يتخذ المطور أو المدير القرار النهائي للنشر. Staging — بيئة قريبة قدر الإمكان من الإنتاج، تُستخدم لاختبار البناء قبل الإصدار.
GitHub Actions هو نظام CI/CD مدمج لأتمتة التطبيقات المحمولة على GitHub. يستخدم Actions تهيئة YAML (.github/workflows) لوصف pipelines. تتوفر إجراءات جاهزة للتطوير المحمول: actions/setup-java وgradle-build-action لنظام Android وxcodebuild-action لنظام iOS. يوفر GitHub Actions 2000 دقيقة مجانية شهريًا للمستودعات الخاصة.
مثال: workflow لنظام Android يشمل سحب الكود وإعداد JDK 17 وتخزين تبعيات Gradle مؤقتًا وتشغيل lint واختبارات الوحدة وبناء APK ورفع النتائج. لنظام iOS — سحب الكود وإعداد Xcode وpod install وتشغيل XCTest والأرشفة وتصدير IPA. يتكامل GitHub Actions مع GitHub Releases وSlack وTelegram للإشعارات.
GitLab CI هو نظام CI/CD مدمج في GitLab، يتم تهيئته عبر .gitlab-ci.yml. يستخدم GitLab CI runners — وكلاء ينفذون المهام. للتطوير المحمول يمكنك استخدام runners مشتركة (Linux لنظام Android) أو runners خاصة بك (macOS لنظام iOS). يدعم GitLab CI المهام المتوازية والنتائج والبيئات والموافقة اليدوية لإصدارات الإنتاج.
Bitrise هي منصة CI/CD متخصصة في أتمتة التطبيقات المحمولة. تقدم Bitrise Steps جاهزة لنظام Android وiOS وFlutter وReact Native: Gradle Runner وXcode Archive وFlutter Test وCocoaPods Install. تقوم Bitrise تلقائيًا بتكوين توقيع الكود لنظام iOS (عبر Codesigndoc) وتوفر أجهزة افتراضية مثبت عليها مسبقًا Xcode وAndroid SDK وFlutter وأدوات أخرى.
مزايا Bitrise: إعداد بسيط عبر محرر Workflow المرئي، دعم للبناء المتوازي، تكامل مع Firebase Test Lab وApp Store Connect وGoogle Play Console. توفر Bitrise 90 دقيقة مجانية شهريًا للمشاريع الشخصية. في IT Sectr نستخدم Bitrise لجميع المشاريع المحمولة — إنه يبسط CI/CD بشكل كبير مقارنة بالإعداد اليدوي لـ GitHub Actions.
| المعيار | GitHub Actions | GitLab CI | Bitrise | CircleCI |
|---|---|---|---|---|
| التخصص | عام | عام | محمول | عام |
| macOS لنظام iOS | نعم (macOS runner) | runner خاص | نعم (مدمج) | نعم (macOS) |
| الحد المجاني | 2000 دقيقة/شهر | 400 دقيقة/شهر | 90 دقيقة/شهر | 6000 دقيقة/شهر |
| تكامل Fastlane | عبر run script | عبر run script | Step جاهز | عبر run script |
| توقيع الكود | إعداد يدوي | إعداد يدوي | تلقائي | عبر Fastlane |
| البناء المتوازي | نعم | نعم | نعم | نعم |
Fastlane هي أداة أتمتة للتطبيقات المحمولة لنظامي iOS وAndroid، مكتوبة بلغة Ruby. تتكون Fastlane من نظام إجراءات جاهزة (أكثر من 200) وDSL لوصف السيناريوهات عبر Fastfile. تحل Fastlane المهام التي يقوم بها كل مطور محمول يدويًا: توقيع الكود، إنشاء لقطات الشاشة، الرفع إلى TestFlight وGoogle Play، إدارة الشهادات وملفات التزويد.
Lane — سيناريو مسمى في Fastfile. مثال: lane :release do — سلسلة إجراءات لإصدار نسخة. Match — أداة للتخزين الآمن والمزامنة للشهادات وملفات التزويد عبر مستودع Git مشفر. Gym — بناء وأرشفة تطبيقات iOS (غلاف حول xcodebuild). Pilot — رفع وإدارة البناءات في TestFlight. Deliver — رفع التطبيق والبيانات الوصفية إلى App Store Connect. Snapshot — إنشاء تلقائي للقطات الشاشة بجميع اللغات. Screengrab — إنشاء تلقائي للقطات الشاشة لنظام Android.
مثال Fastfile لنظام Android: lane :beta يستدعي gradle (assembleRelease)، ثم firebase_app_distribution للتوزيع على المختبرين. لنظام iOS: lane :beta يستدعي match (تنزيل الشهادات)، gym (الأرشفة) وpilot (الرفع إلى TestFlight). يمكن تشغيل Fastlane محليًا وعلى خادم CI — مما يجعلها أداة عالمية في أي مشروع محمول.
Canary Release هي استراتيجية أتمتة CI/CD لنشر نسخة جديدة من التطبيق لنسبة صغيرة من المستخدمين (1–5%) قبل الإصدار الكامل. في Google Play Console يتم تنفيذ ذلك عبر Staged Rollout: تنشر تحديثًا لـ 5% من جمهورك، تراقب الأعطال والمقاييس، وتزيد النسبة إذا لم تكن هناك مشاكل. في App Store Connect — عبر Phased Release for Automatic Updates.
A/B Testing — مقارنة نسختين من ميزة واحدة على مجموعات عشوائية من المستخدمين. في التطوير المحمول، يتم إجراء اختبارات A/B عبر Feature Flags أو Firebase Remote Config أو منطق الخادم. Canary Release واختبارات A/B تقلل المخاطر عند نشر ميزات جديدة.
Feature Flag (Feature Toggle) — تفعيل مشروط للوظائف دون نشر كود جديد. Feature Flag هو فحص في الكود: if (featureFlag.isEnabled()) { /* كود جديد */ } else { /* كود قديم */ }. تتم إدارة الأعلام عبر خدمات: LaunchDarkly وSplit.io وFirebase Remote Config. تسمح Feature Flags للمطورين بدمج الكود في main حتى لو كانت الميزة غير جاهزة بعد للمستخدمين.
LaunchDarkly — أشهر منصة لإدارة Feature Flags. توفر LaunchDarkly SDKs لنظام iOS وAndroid وFlutter وReact Native. يمكنك تفعيل الميزات لمستخدمين محددين أو شرائح أو مناطق أو نسبة مئوية من الجمهور. تُستخدم Feature Flags أيضًا كـ kill switch — إيقاف فوري لميزة إشكالية دون إصدار نسخة جديدة من التطبيق.
الأسئلة الشائعة
ابدأ بـ GitHub Actions — إذا كان كودك على GitHub. Actions مجاني للمستودعات العامة، وله دعم مدمج لنظامي Android وiOS (macOS runners)، ونظام بيئي ضخم من الإجراءات الجاهزة. للتخصص المحمول — Bitrise.
لا، خدمات CI (GitHub Actions وBitrise وCircleCI) توفر macOS runners. تدفع مقابل دقائق الاستخدام. لتصحيح أخطاء Fastlane محليًا تحتاج إلى Mac، لكن CI يمكن أن يعمل في السحابة.
Canary Release — نشر نسخة جديدة لمجموعة فرعية من المستخدمين للتحقق من الاستقرار. اختبار A/B — مقارنة نسختين من ميزة واحدة لاختيار الأفضل. Canary يتعلق بالموثوقية، A/B يتعلق بالتحويل.
Fastlane ليس إلزاميًا لكنه موصى به بشدة. بدون Fastlane ستضطر لتشغيل xcodebuild يدويًا وإدارة الشهادات ورفع البناءات عبر واجهة ويب. Fastlane يؤتمت كل هذه المهام بأمر واحد.
Match هي أداة Fastlane لإدارة شهادات Code Signing لنظام iOS. يخزن Match الشهادات وملفات التزويد في مستودع Git مشفر ويزامنها بين جميع المطورين وخادم CI.
ملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.