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 بلڈ → انٹیگریشن ٹیسٹ → ریلیز بلڈ۔ ہر اقدام پچھلے اقدام کے کامیاب ہونے کے بعد ہی چلتا ہے۔ بلڈ آرٹیفیکٹس — APK، IPA، AAB، ٹیسٹ رپورٹس — محفوظ ہوتے ہیں اور ڈاؤن لوڈ کے لیے دستیاب ہوتے ہیں۔
Continuous Delivery — کوڈ خود بخود بنتا اور جانچا جاتا ہے، لیکن پروڈکشن میں جاری کرنے کا فیصلہ انسان کرتا ہے۔ Continuous Deployment — ہر کامیاب بلڈ خود بخود پروڈکشن میں جاری ہوتا ہے۔ موبائل ایپس کے لیے، TestFlight یا Internal Testing کے ذریعے CD (اسٹورز تک ترسیل) زیادہ عام ہے، کیونکہ اشاعت کا حتمی فیصلہ ڈویلپر یا مینیجر کرتا ہے۔ Staging — پروڈکشن کے جتنا ممکن ہو قریب ماحول، ریلیز سے پہلے بلڈ کی جانچ کے لیے استعمال ہوتا ہے۔
GitHub Actions GitHub پر موبائل ایپس کو خودکار کرنے کے لیے ایک بلٹ ان CI/CD سسٹم ہے۔ Actions پائپ لائنز کی وضاحت کے لیے YAML کنفیگریشن (.github/workflows) استعمال کرتا ہے۔ موبائل ڈویلپمنٹ کے لیے تیار ایکشنز دستیاب ہیں: actions/setup-java، اینڈرائیڈ کے لیے gradle-build-action، iOS کے لیے xcodebuild-action۔ GitHub Actions نجی ذخیروں کے لیے ماہانہ 2000 مفت منٹ فراہم کرتا ہے۔
مثال: اینڈرائیڈ ورک فلو میں کوڈ چیک آؤٹ، JDK 17 سیٹ اپ، Gradle انحصار کیشنگ، لنٹ اور یونٹ ٹیسٹ، APK بلڈ اور آرٹیفیکٹ اپ لوڈ شامل ہے۔ iOS کے لیے — چیک آؤٹ، Xcode سیٹ اپ، pod install، XCTest رن، آرکائیو اور IPA ایکسپورٹ۔ GitHub Actions اطلاعوں کے لیے GitHub Releases، Slack اور Telegram کے ساتھ مربوط ہوتا ہے۔
GitLab CI GitLab میں ایک بلٹ ان CI/CD سسٹم ہے، جو .gitlab-ci.yml کے ذریعے ترتیب دیا جاتا ہے۔ GitLab CI رنرز استعمال کرتا ہے — ایجنٹ جو کام انجام دیتے ہیں۔ موبائل ڈویلپمنٹ کے لیے آپ مشترکہ رنرز (اینڈرائیڈ کے لیے Linux) یا اپنے رنرز (iOS کے لیے macOS) استعمال کر سکتے ہیں۔ GitLab CI متوازی کاموں، آرٹیفیکٹس، ماحول اور پروڈکشن ریلیز کے لیے دستی منظوری کو سپورٹ کرتا ہے۔
Bitrise ایک CI/CD پلیٹ فارم ہے جو موبائل ایپ آٹومیشن میں مہارت رکھتا ہے۔ Bitrise Android، iOS، Flutter اور React Native کے لیے تیار Steps پیش کرتا ہے: 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 استعمال کرتے ہیں — یہ دستی GitHub Actions سیٹ اپ کے مقابلے میں CI/CD کو نمایاں طور پر آسان بناتا ہے۔
| معیار | GitHub Actions | GitLab CI | Bitrise | CircleCI |
|---|---|---|---|---|
| مہارت | عام | عام | موبائل | عام |
| iOS کے لیے macOS | ہاں (macOS رنر) | اپنا رنر | ہاں (بلٹ ان) | ہاں (macOS) |
| مفت حد | 2000 منٹ/ماہ | 400 منٹ/ماہ | 90 منٹ/ماہ | 6000 منٹ/ماہ |
| Fastlane انضمام | run script کے ذریعے | run script کے ذریعے | تیار Step | run script کے ذریعے |
| کوڈ سائننگ | دستی ترتیب | دستی ترتیب | خودکار | Fastlane کے ذریعے |
| متوازی بلڈز | ہاں | ہاں | ہاں | ہاں |
Fastlane iOS اور Android کے لیے موبائل ایپ آٹومیشن ٹول ہے، جو Ruby میں لکھا گیا ہے۔ Fastlane تیار ایکشنز (200+) کے نظام اور Fastfile کے ذریعے منظرنامے بیان کرنے کے لیے DSL پر مشتمل ہے۔ Fastlane ان کاموں کو حل کرتا ہے جو ہر موبائل ڈویلپر دستی طور پر کرتا ہے: کوڈ سائننگ، اسکرین شاٹ جنریشن، TestFlight اور Google Play پر اپ لوڈ، سرٹیفکیٹ اور پروویژننگ پروفائل مینجمنٹ۔
Lane — Fastfile میں ایک نامی منظرنامہ۔ مثال: lane :release do — ریلیز جاری کرنے کے لیے کارروائیوں کا سلسلہ۔ Match — ایک خفیہ کردہ Git ذخیرے کے ذریعے سرٹیفکیٹس اور پروویژننگ پروفائلز کو محفوظ طریقے سے ذخیرہ اور مطابقت پذیر کرنے کا ٹول۔ Gym — iOS ایپ بلڈ اور آرکائیو کرنا (xcodebuild پر ایک ریپر)۔ Pilot — TestFlight میں بلڈ اپ لوڈ اور انتظام۔ Deliver — App Store Connect پر ایپ اور میٹا ڈیٹا اپ لوڈ۔ Snapshot — تمام زبانوں میں خودکار اسکرین شاٹ جنریشن۔ Screengrab — Android کے لیے خودکار اسکرین شاٹ جنریشن۔
Android کے لیے Fastfile مثال: lane :beta gradle (assembleRelease) کو کال کرتا ہے، پھر ٹیسٹرز کو تقسیم کے لیے firebase_app_distribution۔ iOS کے لیے: lane :beta match (سرٹیفکیٹ ڈاؤن لوڈ)، gym (آرکائیو) اور pilot (TestFlight پر اپ لوڈ) کو کال کرتا ہے۔ Fastlane مقامی طور پر اور CI سرور پر چل سکتا ہے — جو اسے کسی بھی موبائل پروجیکٹ میں ایک عالمگیر ٹول بناتا ہے۔
Canary Release مکمل ریلیز سے پہلے صارفین کے ایک چھوٹے فیصد (1–5%) کو ایپ کا نیا ورژن جاری کرنے کی CI/CD آٹومیشن حکمت عملی ہے۔ 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 iOS، Android، Flutter اور React Native کے لیے SDK فراہم کرتا ہے۔ آپ مخصوص صارفین، سیگمنٹس، علاقوں یا صارفین کے فیصد کے لیے فیچرز فعال کر سکتے ہیں۔ Feature Flags kill switch کے طور پر بھی استعمال ہوتے ہیں — ایپ کا نیا ورژن جاری کیے بغیر مسئلہ والی فیچر کو فوری طور پر غیر فعال کرنا۔
اکثر پوچھے گئے سوالات
اگر آپ کا کوڈ GitHub پر ہے تو GitHub Actions سے شروع کریں۔ Actions عوامی ذخیروں کے لیے مفت ہے، Android اور iOS (macOS رنر) کے لیے بلٹ ان سپورٹ رکھتا ہے، اور تیار ایکشنز کا ایک بہت بڑا ماحولیاتی نظام ہے۔ موبائل مہارت کے لیے — Bitrise۔
نہیں، CI خدمات (GitHub Actions، Bitrise، CircleCI) macOS رنرز فراہم کرتی ہیں۔ آپ استعمال کے منٹوں کے لیے ادائیگی کرتے ہیں۔ مقامی Fastlane ڈیبگنگ کے لیے Mac درکار ہے، لیکن CI کلاؤڈ میں چل سکتا ہے۔
Canary Release — استحکام کی جانچ کے لیے صارفین کے ذیلی سیٹ پر نیا ورژن جاری کرنا۔ A/B Testing — بہتر کا انتخاب کرنے کے لیے ایک فیچر کے دو متغیرات کا موازنہ۔ Canary وشوسنییتا کے بارے میں ہے، A/B تبدیلی کے بارے میں ہے۔
Fastlane لازمی نہیں ہے لیکن انتہائی سفارش کردہ ہے۔ Fastlane کے بغیر آپ کو دستی طور پر xcodebuild چلانا، سرٹیفکیٹس کا انتظام کرنا اور ویب انٹرفیس کے ذریعے بلڈ اپ لوڈ کرنا ہوگا۔ Fastlane ایک ہی کمانڈ سے ان تمام کاموں کو خودکار کرتا ہے۔
Match iOS Code Signing سرٹیفکیٹس کے انتظام کے لیے Fastlane ٹول ہے۔ Match سرٹیفکیٹس اور پروویژننگ پروفائلز کو ایک خفیہ کردہ Git ذخیرے میں محفوظ کرتا ہے اور انہیں تمام ڈویلپرز اور CI سرور کے درمیان مطابقت پذیر کرتا ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔