Fastfile Fastlane کی ایک ترتیباتی فائل ہے جو Ruby زبان میں لکھی گئی ہے اور موبائل ایپلیکیشنز کی تعمیر، جانچ اور تقسیم کے لیے آٹومیشن کے سیناریوز کی وضاحت کرتی ہے۔ یہ فائل پروجیکٹ کے روٹ میں fastlane ڈائریکٹری میں واقع ہے اور اس میں lanes کے اعلانات ہیں — یعنی منطقی کی گئی کاروائیوں کے نامزد تسلسل۔ Fastlane Docs, 2025 کے مطابق، موبائل منصوبوں کے 70% سے زائد CI/CD عملیات کے لیے Fastfile استعمال کرتے ہیں۔ Fastfile درجنوں bash اسکرپٹس کی جگہ ایک واحد اعلانی پائپ لائن کی وضاحت پیش کرتا ہے۔
اہم نکات
Fastfile Fastlane کی مرکزی ترتیباتی فائل ہے، جو Ruby زبان میں لکھی گئی ہے اور پروجیکٹ کے روٹ میں fastlane ڈائریکٹری میں رکھی جاتی ہے۔ یہ ایپلیکیشن کی تعمیر، جانچ، کوڈ دستخط اور تقسیم کے لیے تمام آٹومیشن سیناریوز (lanes) کی وضاحت کرتی ہے۔ Fastfile درجنوں bash اسکرپٹس، Makefile اور دستی ہدایات کی جگہ ایک واحد اعلانی CI/CD پائپ لائن کی وضاحت پیش کرتا ہے۔
Fastfile کی ضرورت اس وقت پیدا ہوتی ہے جب پروجیکٹ کو مختلف ڈیولپر مشینوں اور CI/CD سرورز پر دوبارہ قابل تعمیر کی ضرورت ہوتی ہے۔ ہر ڈیولپر کے ماحول کو دستی ترتیب دینے کے بجائے، Fastfile تمام مراحل کو کوڈ میں مقرر کرتی ہے جسے Git میں ورژن کیا جا سکتا ہے، جائزہ لیا جا سکتا ہے اور پروجیکٹس کے درمیان دوبارہ استعمال کیا جا سکتا ہے۔ ایک واحد Fastfile اس بات کی ضمانت دیتی ہے کہ ڈیولپر مشین پر تعمیر CI/CD سرور پر تعمیر کے عین جیسی ہے۔
Fastfile default_platform ہدایت کے ذریعے پلیٹ فارمز کو سپورٹ کرتی ہے۔ ایک Fastfile میں iOS، Android اور macOS کے لیے سیناریوز تیار کیے جا سکتے ہیں، انہیں platform :ios اور platform :android کے بلاکس میں گروپ کیا جا سکتا ہے۔ یہ خاص طور پر کراس پلیٹ فارم پروجیکٹس کے لیے مفید ہے جہاں iOS اور Android تعمیروں کی مشترکہ تعیناتی ہوتی ہے لیکن مختلف تعمیری اوزار ہوتے ہیں۔
Fastfile تین اہم اجزاء پر مشتمل ہے: پلیٹ فارم کا اعلان (default_platform)، lanes کی تعریفیں اور مددگار فنکشنز کی ترتیب۔ ہر lane lane کی ورڈ سے شروع ہوتی ہے، اس کے بعد سیناریو کا نام (Ruby سمبل)، افعال کے تسلسل کے ساتھ باڈی اور error، success یا ensure کے غلطی کے ہینڈلنگ بلاکس۔
Actions Fastfile میں Hash کی شکل میں پیرامیٹرز کے ساتھ Fastlane کے بنے بنائے فنکشنز کے کال ہیں۔ مثال کے طور پر، gym(scheme: 'App', export_method: 'app-store') مخصوص پیرامیٹرز کے ساتھ iOS ایپلیکیشن کی تعمیر شروع کرتا ہے۔ ہر action ایک نتیجہ واپس کرتا ہے جسے ایک متغیر میں محفوظ کیا جا سکتا ہے اور اگلے actions میں استعمال کیا جا سکتا ہے — یہ lane کے اندر مشروط منطق تعمیر کرنے کی اجازت دیتا ہے۔
Fastfile Ruby میں معیاری ENV میکانیزم کے ذریعے ماحولی متغیرات کو سپورٹ کرتی ہے۔ حساس ڈیٹا (پاس ورڈز، ٹوکنز، کنجیاں) Fastfile میں محفوظ نہیں ہونا چاہیے — CI/CD سسٹم کے ماحولی متغیرات یا .env فائل استعمال کریں جو .gitignore میں شامل کی گئی ہے۔ Fastlane شروع ہونے پر fastlane ڈائریکٹری سے .env فائلوں کو خود بخود لوڈ کرتا ہے۔
Fastfile کے ساتھ fastlane ڈائریکٹری میں اضافی ترتیباتی فائلیں واقع ہیں۔ Appfile میں ایپلیکیشن کے مختصات (app_identifier)، Apple ID اور Team ID شامل ہیں — یہ ڈیٹا خود بخود تمام actions میں ڈال دیا جاتا ہے، ہر lane میں دہرانے سے بچاتا ہے۔ Matchfile match کے لیے ترتیبات محفوظ کرتی ہے: Git ریپوزٹری URL، پروفائل کی قسم اور خفیہ کنجی۔
ترتیبات کو کئی فائلوں میں تقسیم کرنا مختلف ماحول والے پروجیکٹس کی دیکھ بھال کو آسان بناتا ہے۔ مثال کے طور پر، staging اور production کے لیے Matchfile ریپوزٹری میں علیحدہ شاخیں بنائی جا سکتی ہیں یا CI/CD سسٹم میں ماحولی متغیرات کے ذریعے پیرامیٹرز کو اوور رائٹ کیا جا سکتا ہے۔
# Fastfile کی بنیادی ساخت
default_platform(:ios)
lane :build_and_test do
cocoapods
scan(scheme: 'App', devices: ['iPhone 15'])
gym(scheme: 'App')
end
lane :deploy do
match(type: 'appstore')
build_and_test
pilot(skip_waiting_for_build_processing: true)
end
Fastfile کا سانٹیکس Ruby DSL (Domain Specific Language) پر مبنی ہے، جو خاص طور پر آٹومیشن سیناریوز کی پڑھنے کی اہلیت کے لیے ڈیزائن کیا گیا ہے۔ Lane کو lane :name do ... end کی ساخت کے ذریعے اعلان کیا جاتا ہے، جہاں name ایک Ruby سمبل ہے جو ٹرمینل یا CI/CD سسٹم سے چلانے کے لیے fastlane name کمانڈ بن جاتا ہے۔
Lane کے اندر منطق کی شاخ داری کے لیے Ruby کے مشروط آپریٹرز استعمال کیے جا سکتے ہیں: if، unless، case۔ قدروں کی ارے پر کارروائی کے لیے each اور while لوپس بھی دستیاب ہیں۔ Fastlane lane کی زندگی کے چکر کے واقعات کے ہینڈلنگ کے لیے خاص before_all، after_all اور error بلاک فراہم کرتا ہے۔
Lane کے پیرامیٹرز options hash کے ذریعے منتقل کیے جاتے ہیں۔ fastlane build --option_name value چلانے پر، قدر lane کے اندر options[:option_name] میں جاتی ہے۔ optional: true کے ذریعے پہلے سے طے شدہ اقدار اور منتقل کردہ پیرامیٹرز کی اقسام کے کنٹرول کے لیے type تصدیق مقرر کی جا سکتی ہے۔
# پیرامیٹرز اور مشروط منطق کے ساتھ Lane
lane :build do |options|
scheme = options[:scheme] || 'App'
export_method = options[:export_method] || 'development'
match(type: export_method)
if export_method == 'appstore'
gym(scheme: scheme, export_method: 'app-store')
pilot(skip_waiting_for_build_processing: true)
else
gym(scheme: scheme, export_method: export_method)
end
end
iOS پروجیکٹ کے لیے ایک مکمل Fastfile میں انحصارات کی تنصیب، جانچ، تعمیر اور TestFlight اور App Store پر تعیناتی کے لیے lanes شامل ہیں۔ ایک مثال دیکھیں جو کمٹ سے TestFlight پر اندرونی جانچ کے لیے اشاعت تک کے معیاری CI/CD عمل کا احاطہ کرتی ہے۔
# iOS CI/CD تقسیم کے لیے Fastfile
default_platform(:ios)
before_all do
cocoapods(try_repo_update_on_error: true)
setup_travis if ENV['TRAVIS']
end
lane :tests do
scan(
scheme: 'App',
devices: ['iPhone 15', 'iPad Pro 12.9'],
output_directory: './test_reports'
)
end
lane :build_appstore do
match(type: 'appstore', readonly: true)
gym(
scheme: 'App',
export_method: 'app-store',
include_bitcode: true
)
end
lane :deploy_testflight do
build_appstore
pilot(
skip_waiting_for_build_processing: true,
distribute_external: false
)
slack(
message: 'بائل اندرونی جانچ کے لیے TestFlight پر اپلوڈ کیا گیا'
)
end
اس مثال میں before_all بلاک ہر lane سے پہلے چلتا ہے اور انحصارات کو انسٹال کرتا ہے۔ tests lane دو آلات پر UI اور Unit ٹیسٹ چلاتی ہے۔ build_appstore lane match کے ذریعے کوڈ پر دستخط لگاتی ہے اور bitcode کے ساتھ IPA تیار کرتی ہے۔ deploy_testflight lane مکمل تقسیم کے لیے تمام مراحل کو ملا دیتی ہے۔
متعدد ٹارگٹس (مرکزی ایپلیکیشن، watchOS، widget، Notification Service Extension) والے پروجیکٹس کو ہر ٹارگٹ کے لیے علیحدہ lanes کی ضرورت ہوتی ہے۔ Fastfile میں ایک جامع :deploy_target lane بنائی جا سکتی ہے جو اسکیم کا نام اور تعمیر کا راستہ بطور پیرامیٹر لیتی ہے۔ یہ fastlane deploy_target scheme:Widget کے ذریعے تمام ایکسٹینشنز کے لیے تعیناتی چلانے کی اجازت دیتا ہے۔
متعدد ٹارگٹس کی تنظیم کے لیے lane کے اندر اسکیمز کی ایک ارے اور each لوپ استعمال کریں۔ Fastlane parallel: true پرچم کے ذریعے متعدد اسکیمز کی متوازی تعمیر کو سپورٹ کرتا ہے، جو ایکسٹینشنز والی ایپلیکیشنز کے لیے کل CI/CD پائپ لائن وقت کو کم کرتا ہے۔
Android پروجیکٹ کے لیے Fastfile Gradle کاموں کو چلانے کے لیے gradle action اور Google Play پر اشاعت کے لیے supply action استعمال کرتی ہے۔ iOS کے برعکس، Android کو match کی ضرورت نہیں ہے لیکن یہ دستخط کے لیے Keystore استعمال کرتا ہے، جو ریپوزٹری سے باہر محفوظ ہوتا ہے اور ماحولی متغیرات کے ذریعے منتقل کیا جاتا ہے۔
# Android CI/CD تعمیر کے لیے Fastfile
default_platform(:android)
lane :build_release do
gradle(task: 'clean')
gradle(task: 'bundleRelease')
gradle(task: 'assembleRelease')
end
lane :deploy_internal do
build_release
supply(
track: 'internal',
aab: 'app/build/outputs/bundle/release/app-release.aab',
release_status: 'completed'
)
end
Android ایپلیکیشن پر دستخط کے لیے build.gradle میں signingConfigs ترتیب دیں اور Keystore پیرامیٹرز کو ماحولی متغیرات کے ذریعے منتقل کریں: ANDROID_KEYSTORE_PATH، ANDROID_KEYSTORE_PASSWORD، ANDROID_KEY_ALIAS اور ANDROID_KEY_PASSWORD۔ Fastlane خود بخود تعمیر شدہ AAB یا APK پر دستخط کے لیے سسٹم apksigner استعمال کرتا ہے۔
Fastfile میں Android دستخط کی ترتیب کے لیے sign_android action استعمال کریں یا build.gradle میں signingConfigs پر انحصار کریں۔ Fastlane Gradle کے ذریعے apksigner کے ساتھ مربوط ہوتا ہے — gradle task میں SIGNING_CONFIG پرچم کی منتقلی ماحولی متغیرات سے پیرامیٹرز کے ساتھ دستخط کو فعال کرتی ہے۔ یہ Google Play Console پر اپ لوڈ کرنے سے پہلے AAB فائلوں پر دستخط کرنے کی اجازت دیتا ہے۔
CI/CD میں Keystore کی محفوظ ذخیرہ کے لیے Base64 انکوڈنگ اور ماحولی متغیرات استعمال کریں۔ Fastlane setup_keystore action کو سپورٹ کرتا ہے جو Keystore کو متغیر سے ڈی کوڈ کرتا ہے اور before_all مرحلے پر عارضی فائل میں محفوظ کرتا ہے۔ Lane مکمل ہونے پر عارضی فائل خود بخود حذف کر دی جاتی ہے تاکہ سرٹیفکیٹ لیک ہونے سے روکا جا سکے۔
Private lanes (پوشیدہ سیناریوز) ایسی lanes ہیں جو کمانڈ لائن سے براہ راست نہیں بلائی جا سکتیں لیکن Fastfile کے اندر دوسرے lanes سے بلائی جا سکتی ہیں۔ Private lane کو private_lane :name do ... end کی ساخت کے ذریعے اعلان کیا جاتا ہے اور اسے دہرائے جانے والے مراحل کو اینکیپسولیٹ کرنے کے لیے استعمال کیا جاتا ہے جو خود مختار سیناریوز کے طور پر معنی نہیں رکھتے۔
Private lanes دہرائی جانے والی منطق کی گروپبندی کے لیے مثالی ہیں: انحصارات کی تنصیب، ماحول کی ترتیب، اطلاع بھیجنا۔ مثال کے طور پر، ایک private lane :setup_signing بنائی جا سکتی ہے جو متعدد تعیناتی lanes سے بلائی جاتی ہے لیکن غلطیوں سے بچنے کے لیے ڈیولپر کے براہ راست چلانے کے لیے دستیاب نہیں ہونی چاہیے۔
# Private lane اور گروپبندی
default_platform(:ios)
private_lane :setup_signing do |options|
match(
type: options[:type],
readonly: true,
verbose: false
)
end
lane :beta do
setup_signing(type: 'adhoc')
gym(export_method: 'ad-hoc')
pilot(distribute_external: true)
end
lane :release do
setup_signing(type: 'appstore')
gym(export_method: 'app-store')
deliver(
force: true,
submit_for_review: true
)
end
platform بلاکس کے ذریعے lanes کی گروپبندی ایک Fastfile میں iOS اور Android کے لیے سیناریوز کو علیحدہ کرنے کی اجازت دیتی ہے۔ platform :ios do ... end اور platform :android do ... end کی ساخت متعلقہ پلیٹ فارم کی lanes کو الگ کرتی ہے، جبکہ مشترکہ private lanes کو دوبارہ استعمال کے لیے پلیٹ فارم بلاکس سے باہر رکھا جا سکتا ہے۔
Fastfile کا پیرامیٹرز میکانیزم lanes کو لچکدار اور دوبارہ قابل استعمال بناتا ہے۔ پیرامیٹرز چلانے کے وقت کمانڈ لائن کے ذریعے منتقل کیے جاتے ہیں: fastlane build scheme:App export_method:appstore۔ Lane کے اندر، قدروں تک options hash کے ذریعے رسائی حاصل کی جاتی ہے جو lane بلاک کو ایک آرگیومنٹ کے طور پر منتقل کیا جاتا ہے۔
Fastlane OptionalHash کے ذریعے تصدیق کے ساتھ قسم کے ساتھ پیرامیٹرز کو سپورٹ کرتا ہے۔ قدر کی قسم (String، Boolean، Integer)، پہلے سے طے شدہ قدر اور خودکار دستاویزات تیاری کے لیے تفصیل مقرر کی جا سکتی ہے۔ اس کے علاوہ ماحولی متغیرات بھی پیرامیٹرز کی منتقلی کے ایک متبادل طریقہ کے طور پر دستیاب ہیں، جو CI/CD سسٹمز کے لیے آسان ہے۔
# قسم کی تصدیق کے ساتھ پیرامیٹرز
lane :build do |options|
gym(
scheme: options[:scheme],
export_method: options[:export_method] || 'development',
include_bitcode: options[:include_bitcode] || false,
output_name: options[:output_name]
)
slack(message: "بلڈ #{options[:scheme]} مکمل ہو گئی")
end
# لنچ: fastlane build scheme:MyApp export_method:appstore
تمام غیر لازمی پیرامیٹرز کے لیے پہلے سے طے شدہ اقدار استعمال کرنے کی سفارش کی جاتی ہے تاکہ lane کو ہر آرگیومنٹ کو واضح طور پر مخصوص کیے بغیر چلایا جا سکے۔ لازمی پیرامیٹرز کے لیے، lane کے شروع میں قدر کی موجودگی چیک کریں اور UI.user_error! کے ذریعے ایک قابل فہم غلطی پیغام کے ساتھ عمل کو روک دیں۔
اکثر پوچھے گئے سوالات
Fastfile Ruby میں لکھی گئی Fastlane کی ترتیباتی فائل ہے جو iOS اور Android ایپلیکیشنز کی تعمیر، جانچ اور تقسیم کے لیے آٹومیشن سیناریوز کی وضاحت کرتی ہے۔ یہ فائل fastlane ڈائریکٹری میں واقع ہے اور CI/CD عملیات کے لیے lanes — نامزد کردہ کاروائیوں کے تسلسل — رکھتی ہے۔
پروجیکٹ کے روٹ میں fastlane ڈائریکٹری اور Fastfile فائل بنائیں۔ default_platform(:ios) شامل کریں، :build نام سے ایک lane اعلان کریں، اندر انحصارات کی تنصیب کے لیے cocoapods اور تعمیر کے لیے gym کو کال کریں۔ پروجیکٹ کے روٹ سے ٹرمینل میں fastlane build کے ذریعے چلائیں۔
Private lane کو lane کے بجائے private_lane کے ذریعے اعلان کیا جاتا ہے اور اسے کمانڈ لائن سے براہ راست نہیں بلایا جا سکتا۔ یہ صرف Fastfile کے اندر دوسرے lanes سے بلایا جا سکتا ہے۔ اسے دہرائے جانے والے مراحل کو اینکیپسولیٹ کرنے کے لیے استعمال کیا جاتا ہے جو خود مختار سیناریوز کے طور پر معنی نہیں رکھتے۔
پیرامیٹرز کمانڈ لائن fastlane build scheme:App کے ذریعے منتقل کیے جاتے ہیں اور lane کے اندر options hash کے ذریعے قابل رسائی ہوتے ہیں۔ || آپریٹر کے ذریعے پہلے سے طے شدہ اقدار مقرر کی جا سکتی ہیں، اور لازمی پیرامیٹرز کے لیے lane کے شروع میں raise یا UI.user_error! کے ذریعے موجودگی چیک کریں۔
Fastfile کو پروجیکٹ کے روٹ میں fastlane ڈائریکٹری میں ہونا چاہیے۔ مثال: /Users/user/projects/MyApp/fastlane/Fastfile۔ Fastlane پروجیکٹ کے روٹ سے چلانے پر خود بخود فائل ڈھونڈ لیتا ہے۔ اسی ڈائریکٹری میں Appfile، Matchfile اور دیگر ترتیباتی فائلیں بھی ہو سکتی ہیں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں