Fastlane — iOS va Android uchun mobil ilovalarni build qilish va nashr etishni avtomatlashtirish vositasi. Fastlane kod imzolash, build qilish, testlarni ishga tushirish, skrinshotlar yaratish va App Store Connect hamda Google Play Console-ga yuklashni boshqaradi. Bu mobil ishlab chiqishda CI/CD uchun de-fakto standartdir.
Asosiy xulosalar
Fastlane — bu mobil ishlab chiqishning kundalik vazifalarini avtomatlashtiradigan ochiq manbali vosita: ilovani build qilish, testlarni ishga tushirish, skrinshotlar yaratish, sertifikatlarni boshqarish, buildlarni TestFlight, App Store va Google Play-ga yuklash. Fastlane Ruby tilida yozilgan va gem install fastlane buyrug'i bilan RubyGems orqali tarqatiladi.
Fastlane 2015-yilda iOS vositasi sifatida paydo bo'ldi, ammo tezda Android-ga kengaydi. Bugungi kunda bu o'nlab actionlar — lanes deb ataladigan stsenariylarda birlashtirilishi mumkin bo'lgan o'rnatilgan buyruqlar ekotizimidir. Har bir lane aniq vazifani bajaradi: masalan, build_release reliz versiyasini yig'adi, deploy_beta esa buildni TestFlight-ga yuklaydi.
Fastlane Uber, Airbnb, Snapchat, Twitter va Shopify kabi kompaniyalar tomonidan qo'llaniladi. 2024-yil so'roviga ko'ra, iOS dasturchilarining 60% dan ortig'i o'z loyihalarida Fastlane-dan foydalanadi. Vosita ham lokal ishga tushirishni, ham bulutli CI tizimlari bilan integratsiyani qo'llab-quvvatlaydi, bu esa uni mobil CI/CD uchun de-fakto standartga aylantiradi.
# Fastlane-ni o'rnatish
sudo gem install fastlane -NV
# Loyihada initsializatsiya
fastlane init
Initsializatsiyadan so'ng Fastlane uchta faylli fastlane/ katalogini yaratadi: Fastfile (stsenariylar), Appfile (ilova sozlamalari) va Matchfile (sertifikat sozlamalari). Ushbu struktura ikkala platforma — iOS va Android uchun yagona bo'lib qoladi.
Fastlane-ning asosiy konfiguratsiya fayli — Fastfile. U loyiha ildizidagi fastlane/ katalogida joylashgan. Fastfile Ruby tilida yoziladi: har bir lane — action-lar ketma-ketligiga ega nomlangan blok. Lane parametrlarni qabul qilishi, boshqa lanes-larni chaqirishi va qiymatlarni qaytarishi mumkin.
# fastlane/Fastfile — iOS uchun namuna
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
Har bir lane fastlane ios beta yoki fastlane ios release buyrug'i bilan ishga tushiriladi. Fastfile o'zgaruvchilar, shartlar, sikllar va tashqi skriptlarni chaqirishni qo'llab-quvvatlaydi — bu to'liq Ruby faylidir. Dasturchilar kodni private_lane (lokal metodlar) va boshqa Fastfile-lardan import orqali qayta ishlatishlari mumkin.
Fastlane ko'pchilik vazifalar uchun 200 dan ortiq o'rnatilgan actionlarni taqdim etadi. Agar kerakli action bo'lmasa, Ruby-da o'z action-ingizni yozishingiz yoki sh("...") orqali shell buyrug'ini chaqirishingiz mumkin. Action-lar parametrlarni qabul qilishi mumkin — build sozlamalari, yo'llar, kirish tokenlari — va keyingi qadamlarda foydalanish uchun natijani qaytarishi mumkin.
Fastlane iOS uchun uchta asosiy muammoni hal qiladi: sertifikatlar va provisioning profile-larni boshqarish, Xcode orqali IPA yig'ish va App Store Connect hamda TestFlight-da nashr qilish. Ushbu vazifalarning har biri alohida action bilan qoplanadi.
match — sertifikatlarni boshqarish uchun action. Barcha sertifikatlar va provisioning profile-larni shifrlangan Git repozitoriyasida saqlaydi. Har bir dasturchi va CI server bir xil fayllar to'plamidan foydalanadi, bu esa ziddiyatlar va muddati o'tgan sertifikatlar bilan bog'liq muammolarni bartaraf qiladi. Match yangi qurilmalar qo'shilganda profillarni avtomatik yangilaydi.
sigh — Apple Developer Portal orqali provisioning profile yaratadi va yuklab oladi. Muayyan turdagi profilni tezda olish kerak bo'lganda ishlatiladi: development, ad-hoc yoki appstore.
gym — IPA yig'ish. Gym xcodebuild-ni optimal parametrlar bilan o'rab oladi, avtomatik ravishda sxema, konfiguratsiya, export options-ni tanlaydi va imzolangan IPA yaratadi. Misol: gym(scheme: "MyApp", export_method: "app-store").
pilot — TestFlight boshqaruvi. Buildni yuklaydi, testerlar qo'shadi, ko'rib chiqish statusini kuzatadi. deliver — App Store-da to'liq nashr, jumladan metadata, skrinshotlar, narx va versiyalar.
# iOS ilovasini yig'ish va nashr qilish
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 bilan ishlash uchun kirish tokenlari talab qilinadi. Fastlane ikkita autentifikatsiya usulini qo'llab-quvvatlaydi: App Store Connect API Key (tavsiya etiladi) va ikki faktorli autentifikatsiya bilan Apple ID. API kalitlari CI/CD uchun qulayroq, chunki interaktiv parol kiritishni talab qilmaydi.
| Action | Maqsad | Qo'lda analog |
|---|---|---|
match | Sertifikatlar va profillarni boshqarish | Apple Developer Portal |
sigh | Provisioning profile yaratish | Xcode + Developer Portal |
gym | IPA yig'ish | xcodebuild + xcrun |
pilot | TestFlight-ga yuklash | Xcode Organizer |
deliver | App Store-da nashr | App Store Connect Web |
scan | UI testlarni ishga tushirish | xcodebuild test |
Android-da Fastlane Gradle orqali build, APK va AAB imzolash, Google Play Console va Firebase App Distribution-ga yuklashni avtomatlashtiradi.
gradle — Android uchun asosiy action. Kerakli vazifalar bilan Gradle wrapper-ni chaqiradi: gradle(task: "assembleRelease") yoki AAB uchun gradle(task: "bundleRelease"). Bayroqlar, muhit o'zgaruvchilari va gradle.properties yo'lini uzatish mumkin.
supply — APK yoki AAB-ni Google Play Console-ga yuklaydi. Supply versiyalar, treklar (internal, alpha, beta, production), reliz eslatmalari, narx va tarqatish mamlakatini boshqaradi. Misol: supply(track: "beta", release_status: "completed").
screengrab — Google Play uchun skrinshotlar yaratish. Turli qurilmalar va tillarda ilova ekranlarining skrinshotlarini oladigan instrumentation testlarini ishga tushiradi. Olingan skrinshotlar supply orqali yuklanadi.
# Android ilovasini yig'ish va nashr qilish
lane :deploy_android do
gradle(task: "clean bundleRelease")
supply(
track: "beta",
release_status: "completed",
version_code: 42
)
end
| Action | Maqsad | Qo'lda analog |
|---|---|---|
gradle | Gradle orqali build | ./gradlew assembleRelease |
supply | Google Play-ga yuklash | Google Play Console Web |
screengrab | Skrinshotlar yaratish | Qo'lda skrinshot + ImageMagick |
firebase_app_distribution | Firebase orqali tarqatish | Firebase Console Upload |
Fastlane CI/CD pipeline-larida ishlash uchun mo'ljallangan. U interaktiv bo'lmagan rejimni, muhit o'zgaruvchilarini va build artefaktlarini to'g'ri qayta ishlaydi. Quyida — mashhur CI tizimlari bilan integratsiya misollari.
GitHub Actions-da Fastlane Ruby skripti sifatida ishga tushiriladi. Oddiy workflow: Ruby va Fastlane o'rnatish, kalitlarni sozlash (sertifikatlar, API tokenlari secrets orqali), lane-ni ishga tushirish. iOS uchun macOS runner talab qilinadi; Android ubuntu-latest da ishlaydi.
GitLab CI-da Fastlane .gitlab-ci.yml da o'xshash sxema bilan ishlatiladi: bog'liqliklarni o'rnatish, fastlane-ni ishga tushirish, artefaktlarni uzatish. GitLab CI macOS va Linux runner-larini qo'llab-quvvatlaydi.
Bitrise — mobil ilovalar uchun ixtisoslashgan CI/CD — Fastlane uchun o'rnatilgan qo'llab-quvvatlashga ega. Bitrise Workflow Fastlane Step-ni chaqirishi yoki fastlane bilan ixtiyoriy skriptlarni ishga tushirishi mumkin. Bitrise sertifikatlarni o'zining Code Signing menejeri orqali boshqaradi.
# Testlarni shartli ishga tushirish bilan CI/CD uchun 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 integratsiyasining muhim jihati — sirlarni saqlash. Fastlane dotenv orqali .env fayli va muhit o'zgaruvchilaridan foydalanadi. iOS uchun muhim o'zgaruvchilar: MATCH_PASSWORD, FASTLANE_APPLE_API_KEY, FASTLANE_APPLE_API_KEY_ID. Android uchun: SUPPLY_JSON_KEY_DATA — Google Play xizmat hisobining mazmuni.
Fastlane 200 dan ortiq o'rnatilgan action-larni o'z ichiga oladi. Quyida — platforma va maqsad ko'rsatilgan holda eng mashhurlarining sharhi.
| Action | Platforma | Tavsif |
|---|---|---|
gym | iOS | Optimallashtirilgan xcodebuild parametrlari bilan IPA yig'ish |
match | iOS | Git orqali sertifikatlar va provisioning profile-larni sinxronlash |
pilot | iOS | Buildni TestFlight-ga yuklash va testerlarni boshqarish |
deliver | iOS | Ilovani App Store-da metadata bilan nashr qilish |
scan | iOS | Hisobot yaratish bilan unit va UI testlarni ishga tushirish |
gradle | Android | Gradle vazifalarini ishga tushirish: assemble, bundle, test |
supply | Android | APK va AAB-ni Google Play Console-ga yuklash |
screengrab | Android | Google Play uchun avtomatik skrinshotlar |
firebase_app_distribution | Android | Firebase orqali buildlarni tarqatish |
snapshot | iOS | App Store uchun simulyatorlarda avtomatik skrinshotlar |
increment_build_number | iOS | Xcode loyihasida build raqamini avtomatik oshirish |
appcenter_upload | Ikkalasi | Buildni App Center-ga yuklash |
Kerakli action-ni qidirish uchun fastlane action [nomi] buyrug'i ishlatiladi, u hujjatlarni, parametrlarni va misollarni ko'rsatadi. To'liq ro'yxat lokal mavjud: fastlane actions.
Fastlane shuningdek plugins — yangi action-lar qo'shadigan hamjamiyat kengaytmalarini qo'llab-quvvatlaydi. Plaginlar fastlane add_plugin [nomi] orqali o'rnatiladi va RubyGems reestrida mavjud. Mashhur plaginlar misollari: fastlane-plugin-versioning (versiyalarni boshqarish), fastlane-plugin-sentry (debug symbol-larni Sentry-ga yuklash), fastlane-plugin-teams (Microsoft Teams-da bildirishnomalar).
Frequently Asked Questions
Fastlane — mobil ilovalarni build qilish va nashr etishni avtomatlashtirish vositasi. U qo'lda bajariladigan operatsiyalar — yig'ish, imzolash, do'konlarga yuklash — o'rniga bitta buyruqni qo'yish uchun kerak. Fastlane reliz vaqtini soatlardan daqiqalarga qisqartiradi va nashr paytida inson xatolarini bartaraf qiladi.
Ha. Fastlane ikkala platformani mustaqil qo'llab-quvvatlaydi. iOS uchun macOS kerak, Android uchun Linux yetarli. Bitta Fastfile-da lanes-larni platformalar bo'yicha ajratish mumkin: platform :ios do ... end va platform :android do ... end.
match action orqali. U shifrlangan sertifikatlar va provisioning profile-larni Git repozitoriyasida saqlaydi. Har bir dasturchi repozitoriyani klonlaydi, match fayllarni MATCH_PASSWORD o'zgaruvchisidagi parol bilan shifrdan chiqaradi va ularni kalitlar to'plamiga o'rnatadi. Bu "mening mashinamda yig'iladi" muammosini hal qiladi.
Ha. Fastlane APK va IPA-ni Firebase App Distribution-ga yuklash uchun o'rnatilgan firebase_app_distribution action-iga ega. Shuningdek, testerlar qo'shish uchun firebase_app_distribution_add_testers mavjud. Alternativ — App Center uchun appcenter_upload action.
Fastlane RubyGems orqali o'rnatiladi: gem install fastlane -NV. iOS uchun Xcode bilan macOS kerak; Android uchun — JDK va Android SDK bilan Linux yoki macOS. GitHub Actions-da Ruby va Fastlane o'rnatish uchun tayyor ruby/setup-ruby action mavjud. Muhit o'zgaruvchilari CI tizimining secrets orqali uzatiladi.
Fastlane — build va nashr vazifalarini avtomatlashtirish uchun kutubxona va CLI. Bitrise va Jenkins — to'liq CI/CD platformalari. Fastlane ularning ichida ishlaydi: Jenkins Fastlane-ni pipeline qadami sifatida ishga tushiradi, Bitrise Fastlane-ni maxsus Step orqali chaqiradi. Fastlane CI tizimini almashtirmaydi, balki uni mobil xususiyatlar bilan to'ldiradi.
Summary
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.