Fastlane iOS اور Android کے لیے موبائل ایپلیکیشنز کی بلڈ اور اشاعت کو خودکار بنانے کا ایک ٹول ہے۔ Fastlane کوڈ سائننگ، بلڈنگ، ٹیسٹ چلانے، اسکرین شاٹس بنانے اور App Store Connect اور Google Play Console پر اپ لوڈ کرنے کا انتظام کرتا ہے۔ یہ موبائل ڈویلپمنٹ میں CI/CD کے لیے ڈی فیکٹو معیار ہے۔
اہم نکات
Fastlane ایک اوپن سورس ٹول ہے جو موبائل ڈویلپمنٹ کے معمول کے کاموں کو خودکار بناتا ہے: ایپلیکیشن بنانا، ٹیسٹ چلانا، اسکرین شاٹس بنانا، سرٹیفکیٹس کا انتظام کرنا اور TestFlight، App Store اور Google Play پر بلڈ اپ لوڈ کرنا۔ Fastlane Ruby میں لکھا گیا ہے اور gem install fastlane کمانڈ سے RubyGems کے ذریعے تقسیم کیا جاتا ہے۔
Fastlane 2015 میں ایک iOS ٹول کے طور پر سامنے آیا لیکن جلد ہی Android تک پھیل گیا۔ آج یہ درجنوں ایکشنز کا ایک ماحولیاتی نظام ہے — بلٹ ان کمانڈز جنہیں lanes نامی منظرناموں میں ملایا جا سکتا ہے۔ ہر lane ایک مخصوص کام انجام دیتی ہے: مثال کے طور پر، build_release ریلیز ورژن بناتا ہے، اور deploy_beta بلڈ کو TestFlight پر اپ لوڈ کرتا ہے۔
Fastlane Uber، Airbnb، Snapchat، Twitter اور Shopify جیسی کمپنیاں استعمال کرتی ہیں۔ 2024 کے سروے کے مطابق، iOS ڈویلپرز کے 60% سے زیادہ اپنے منصوبوں میں Fastlane استعمال کرتے ہیں۔ ٹول مقامی عملدرآمد اور کلاؤڈ CI سسٹمز کے ساتھ انضمام دونوں کو سپورٹ کرتا ہے، جو اسے موبائل CI/CD کے لیے ڈی فیکٹو معیار بناتا ہے۔
# Fastlane کی تنصیب
sudo gem install fastlane -NV
# پروجیکٹ میں ابتداء
fastlane init
ابتداء کے بعد، Fastlane تین فائلوں کے ساتھ ایک fastlane/ ڈائریکٹری بناتا ہے: Fastfile (منظرنامے)، Appfile(ایپ کی ترتیبات) اور Matchfile (سرٹیفکیٹ کی ترتیبات)۔ یہ ڈھانچہ دونوں پلیٹ فارمز — iOS اور Android — کے لیے یکساں رہتا ہے۔
Fastlane کی مرکزی کنفیگریشن فائل Fastfile ہے۔ یہ پروجیکٹ کی جڑ میں fastlane/ ڈائریکٹری میں واقع ہے۔ Fastfile Ruby میں لکھی جاتی ہے: ہر lane ایکشنز کی ترتیب کے ساتھ ایک نامزد بلاک ہے۔ ایک lane پیرامیٹرز لے سکتی ہے، دوسری lanes کو کال کر سکتی ہے اور ویلیوز واپس کر سکتی ہے۔
# fastlane/Fastfile — iOS مثال
default_platform(:ios)
platform :ios do
desc "Build and upload to TestFlight"
lane :beta do
match(type: "appstore")
gym(scheme: "MyApp", configuration: "Release")
pilot(skip_waiting_for_build: true)
end
desc "Deploy to App Store"
lane :release do
ensure_git_status_clean
match(type: "appstore")
gym(scheme: "MyApp")
deliver(
skip_metadata: true,
skip_screenshots: true
)
push_to_git_remote(tags: true)
end
end
ہر lane کمانڈ fastlane ios beta یا fastlane ios release سے چلائی جاتی ہے۔ Fastfile متغیرات، شرائط، لوپس اور بیرونی اسکرپٹ کالز کو سپورٹ کرتی ہے — یہ ایک مکمل Ruby فائل ہے۔ ڈویلپرز private_lane (مقامی طریقے) اور دوسری Fastfiles سے import کے ذریعے کوڈ دوبارہ استعمال کر سکتے ہیں۔
Fastlane زیادہ تر کاموں کے لیے 200 سے زیادہ بلٹ ان ایکشنز فراہم کرتا ہے۔ اگر مطلوبہ ایکشن موجود نہیں ہے، تو آپ Ruby میں اپنا لکھ سکتے ہیں یا sh("...") سے شیل کمانڈ کال کر سکتے ہیں۔ ایکشنز پیرامیٹرز لے سکتے ہیں — بلڈ سیٹنگز، راستے، ایکسس ٹوکن — اور بعد کے مراحل میں استعمال کے لیے نتائج واپس کر سکتے ہیں۔
iOS کے لیے Fastlane تین اہم مسائل حل کرتا ہے: سرٹیفکیٹ اور پروویژننگ پروفائل مینجمنٹ، Xcode کے ذریعے IPA بلڈ، اور App Store Connect اور TestFlight پر اشاعت۔ ان میں سے ہر ایک کام ایک علیحدہ ایکشن سے کور کیا جاتا ہے۔
match سرٹیفکیٹ مینجمنٹ کے لیے ایک ایکشن ہے۔ یہ تمام سرٹیفکیٹس اور پروویژننگ پروفائلز کو ایک خفیہ کردہ Git ریپوزٹری میں محفوظ کرتا ہے۔ ہر ڈویلپر اور CI سرور فائلوں کا ایک ہی سیٹ استعمال کرتا ہے، جو تنازعات اور میعاد ختم شدہ سرٹیفکیٹ کے مسائل کو ختم کرتا ہے۔ Match نئے آلات شامل ہونے پر خود بخود پروفائلز اپ ڈیٹ کرتا ہے۔
sigh Apple Developer Portal کے ذریعے پروویژننگ پروفائل بناتا اور ڈاؤن لوڈ کرتا ہے۔ یہ اس وقت استعمال ہوتا ہے جب کسی مخصوص قسم — development، ad-hoc یا appstore — کے لیے فوری طور پر پروفائل درکار ہو۔
gym IPA بناتا ہے۔ Gym xcodebuild کو بہترین پیرامیٹرز کے ساتھ لپیٹتا ہے، خود بخود اسکیما، کنفیگریشن، ایکسپورٹ آپشنز منتخب کرتا ہے اور ایک سائن شدہ IPA بناتا ہے۔ مثال: gym(scheme: "MyApp", export_method: "app-store")۔
pilot TestFlight کا انتظام کرتا ہے۔ یہ بلڈ اپ لوڈ کرتا ہے، ٹیسٹرز شامل کرتا ہے اور جائزہ کی حیثیت کو ٹریک کرتا ہے۔ deliver میٹا ڈیٹا، اسکرین شاٹس، قیمتوں اور ورژننگ سمیت مکمل App Store اشاعت سنبھالتا ہے۔
# iOS ایپ بنانا اور شائع کرنا
lane :deploy_ios do
cocoapods
match(type: "appstore", readonly: true)
gym(scheme: "MyApp", export_method: "app-store")
pilot(changelog: "Bug fixes and performance improvements")
end
App Store Connect کے ساتھ کام کرنے کے لیے ایکسس ٹوکن درکار ہیں۔ Fastlane دو تصدیقی طریقوں کو سپورٹ کرتا ہے: App Store Connect API Key (تجویز کردہ) اور دو عوامل والی تصدیق کے ساتھ Apple ID۔ API چابیاں CI/CD کے لیے زیادہ آسان ہیں کیونکہ انہیں انٹرایکٹو پاس ورڈ داخل کرنے کی ضرورت نہیں ہوتی۔
| ایکشن | مقصد | دستی مساوی |
|---|---|---|
match | سرٹیفکیٹ اور پروفائل مینجمنٹ | Apple Developer Portal |
sigh | پروویژننگ پروفائل بنانا | Xcode + Developer Portal |
gym | IPA بلڈ | xcodebuild + xcrun |
pilot | TestFlight اپ لوڈ | Xcode Organizer |
deliver | App Store اشاعت | App Store Connect Web |
scan | UI ٹیسٹ چلانا | xcodebuild test |
Android پر، Fastlane Gradle کے ذریعے بلڈ، APK اور AAB سائننگ، Google Play Console پر اپ لوڈ اور Firebase App Distribution کو خودکار بناتا ہے۔
gradle Android بلڈ کے لیے مرکزی ایکشن ہے۔ یہ مطلوبہ کاموں کے ساتھ Gradle ریپر کو کال کرتا ہے: gradle(task: "assembleRelease") یا AAB کے لیے gradle(task: "bundleRelease")۔ آپ فلیگ، ماحولیاتی متغیرات اور gradle.properties کا راستہ پاس کر سکتے ہیں۔
supply APK یا AAB کو Google Play Console پر اپ لوڈ کرتا ہے۔ Supply ورژنز، ٹریکس (internal، alpha، beta، production)، ریلیز نوٹس، قیمتوں اور ملکی تقسیم کا انتظام کرتا ہے۔ مثال: supply(track: "beta", release_status: "completed")۔
screengrab Google Play کے لیے اسکرین شاٹس بناتا ہے۔ یہ انسٹرومینٹیشن ٹیسٹ چلاتا ہے جو مختلف آلات اور زبانوں پر ایپ کے اسکرین شاٹس لیتے ہیں۔ نتیجے میں آنے والے اسکرین شاٹس supply کے ذریعے اپ لوڈ کیے جاتے ہیں۔
# Android ایپ بنانا اور شائع کرنا
lane :deploy_android do
gradle(task: "clean bundleRelease")
supply(
track: "beta",
release_status: "completed",
version_code: 42
)
end
| ایکشن | مقصد | دستی مساوی |
|---|---|---|
gradle | Gradle سے بلڈ | ./gradlew assembleRelease |
supply | Google Play پر اپ لوڈ | Google Play Console Web |
screengrab | اسکرین شاٹ بنانا | دستی اسکرین شاٹ + ImageMagick |
firebase_app_distribution | Firebase تقسیم | Firebase Console Upload |
Fastlane CI/CD پائپ لائنز میں کام کرنے کے لیے ڈیزائن کیا گیا ہے۔ یہ غیر انٹرایکٹو موڈ، ماحولیاتی متغیرات اور بلڈ آرٹیفیکٹس کو صحیح طریقے سے ہینڈل کرتا ہے۔ ذیل میں مشہور CI سسٹمز کے ساتھ انضمام کی مثالیں ہیں۔
GitHub Actions میں، Fastlane Ruby اسکرپٹ کے طور پر چلتا ہے۔ ایک عام ورک فلو: Ruby اور Fastlane انسٹال کریں، چابیاں ترتیب دیں (secrets کے ذریعے سرٹیفکیٹس، API ٹوکن)، اور lane چلائیں۔ iOS کو macOS رنر درکار ہے؛ Android ubuntu-latest پر کام کرتا ہے۔
GitLab CI میں، Fastlane .gitlab-ci.yml میں اسی طرح کی ترتیب سے استعمال ہوتا ہے: انحصار انسٹال کریں، fastlane چلائیں اور آرٹیفیکٹس پاس کریں۔ GitLab CI macOS اور Linux رنرز کو سپورٹ کرتا ہے۔
Bitrise — موبائل ایپلیکیشنز کے لیے ایک خصوصی CI/CD — میں بلٹ ان Fastlane سپورٹ ہے۔ Bitrise Workflow Fastlane Step کو کال کر سکتا ہے یا fastlane کے ساتھ کسٹم اسکرپٹ چلا سکتا ہے۔ Bitrise اپنے کوڈ سائننگ مینیجر کے ذریعے سرٹیفکیٹس کا انتظام کرتا ہے۔
# CI/CD کے لیے Fastfile مشروط ٹیسٹ چلانے کے ساتھ
lane :ci_test do
scan(scheme: "MyApp", code_coverage: true)
end
lane :ci_beta do
ensure_git_status_clean
version_bump_podspec(path: "MyApp.podspec")
match(type: "appstore", readonly: true)
gym(scheme: "MyApp", export_method: "app-store")
pilot(distribute_external: true)
end
CI/CD انضمام کا ایک اہم پہلو رازوں کا ذخیرہ ہے۔ Fastlane dotenv کے ذریعے .env فائل اور ماحولیاتی متغیرات استعمال کرتا ہے۔ iOS کے لیے اہم متغیرات: MATCH_PASSWORD، FASTLANE_APPLE_API_KEY، FASTLANE_APPLE_API_KEY_ID۔ Android کے لیے: SUPPLY_JSON_KEY_DATA — Google Play سروس اکاؤنٹ کا مواد۔
Fastlane میں 200 سے زیادہ بلٹ ان ایکشنز شامل ہیں۔ ذیل میں ان کے پلیٹ فارم اور تفصیل کے ساتھ سب سے مقبول ایکشنز کا جائزہ ہے۔
| ایکشن | پلیٹ فارم | تفصیل |
|---|---|---|
gym | iOS | بہتر xcodebuild پیرامیٹرز کے ساتھ IPA بنانا |
match | iOS | Git کے ذریعے سرٹیفکیٹ اور پروویژننگ پروفائلز مطابقت پذیر بنانا |
pilot | iOS | TestFlight پر بلڈ اپ لوڈ اور ٹیسٹرز کا انتظام |
deliver | iOS | میٹا ڈیٹا کے ساتھ App Store پر ایپ شائع کرنا |
scan | iOS | رپورٹ جنریشن کے ساتھ یونٹ اور UI ٹیسٹ چلانا |
gradle | Android | Gradle کام چلانا: assemble، bundle، test |
supply | Android | APK اور AAB Google Play Console پر اپ لوڈ کرنا |
screengrab | Android | Google Play کے لیے خودکار اسکرین شاٹس |
firebase_app_distribution | Android | Firebase کے ذریعے بلڈ تقسیم کرنا |
snapshot | iOS | App Store کے لیے سمیلیٹروں پر خودکار اسکرین شاٹس |
increment_build_number | iOS | Xcode پروجیکٹ میں بلڈ نمبر خودکار اضافہ |
appcenter_upload | دونوں | App Center پر بلڈ اپ لوڈ کرنا |
مطلوبہ ایکشن تلاش کرنے کے لیے، کمانڈ fastlane action [نام] استعمال کریں، جو دستاویزات، پیرامیٹرز اور مثالیں دکھاتا ہے۔ مکمل فہرست مقامی طور پر دستیاب ہے: fastlane actions۔
Fastlane پلگ انز کو بھی سپورٹ کرتا ہے — کمیونٹی ایکسٹینشنز جو نئے ایکشنز شامل کرتی ہیں۔ پلگ انز fastlane add_plugin [نام] سے انسٹال ہوتے ہیں اور RubyGems رجسٹری میں دستیاب ہیں۔ مقبول پلگ انز کی مثالیں: fastlane-plugin-versioning (ورژن مینجمنٹ)، fastlane-plugin-sentry (Sentry پر ڈیبگ سمبل اپ لوڈ)، fastlane-plugin-teams (Microsoft Teams میں اطلاعات)۔
اکثر پوچھے گئے سوالات
Fastlane موبائل ایپلیکیشنز کی بلڈ اور اشاعت کو خودکار بنانے کا ایک ٹول ہے۔ یہ دستی آپریشنز — بلڈ، کوڈ سائننگ، اسٹور پر اپ لوڈ — کو ایک کمانڈ سے بدل دیتا ہے۔ Fastlane ریلیز کا وقت گھنٹوں سے منٹوں تک کم کرتا ہے اور اشاعت کے دوران انسانی غلطیوں کو ختم کرتا ہے۔
ہاں۔ Fastlane دونوں پلیٹ فارمز کو آزادانہ طور پر سپورٹ کرتا ہے۔ iOS کے لیے macOS درکار ہے، جبکہ Android کے لیے صرف Linux کافی ہے۔ ایک Fastfile میں آپ پلیٹ فارم کے مطابق lanes کو الگ کر سکتے ہیں: platform :ios do ... end اور platform :android do ... end۔
match ایکشن کے ذریعے۔ یہ خفیہ کردہ سرٹیفکیٹس اور پروویژننگ پروفائلز کو Git ریپوزٹری میں محفوظ کرتا ہے۔ ہر ڈویلپر ریپوزٹری کلون کرتا ہے، match MATCH_PASSWORD متغیر کے پاس ورڈ سے فائلیں ڈیکرپٹ کرتا ہے اور انہیں کیچین میں انسٹال کرتا ہے۔ یہ "میری مشین پر کام کرتا ہے" کے مسئلے کو حل کرتا ہے۔
ہاں۔ Fastlane میں APK اور IPA کو Firebase App Distribution پر اپ لوڈ کرنے کے لیے بلٹ ان firebase_app_distribution ایکشن ہے۔ ٹیسٹرز شامل کرنے کے لیے firebase_app_distribution_add_testers بھی دستیاب ہے۔ متبادل App Center کے لیے appcenter_upload ایکشن ہے۔
Fastlane RubyGems کے ذریعے انسٹال ہوتا ہے: gem install fastlane -NV۔ iOS کے لیے macOS اور Xcode درکار ہے؛ Android کے لیے Linux یا macOS اور JDK اور Android SDK درکار ہے۔ GitHub Actions میں Ruby اور Fastlane انسٹال کرنے کے لیے تیار ruby/setup-ruby ایکشن ہے۔ ماحولیاتی متغیرات CI سسٹم کے secrets کے ذریعے پاس کیے جاتے ہیں۔
Fastlane بلڈ اور اشاعت کے کاموں کو خودکار بنانے کے لیے ایک لائبریری اور CLI ہے۔ Bitrise اور Jenkins مکمل CI/CD پلیٹ فارمز ہیں۔ Fastlane ان کے اندر کام کرتا ہے: Jenkins Fastlane کو پائپ لائن مرحلے کے طور پر چلاتا ہے، Bitrise Fastlane کو ایک مخصوص Step کے ذریعے کال کرتا ہے۔ Fastlane CI سسٹم کو تبدیل نہیں کرتا — یہ اسے موبائل مخصوص فعالیت سے مکمل کرتا ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں