Fastfile: mohiyati, tuzilishi va mobil ishlanmada avtomatlashtirishni sozlash

Muallif: IT Sectr Nashr etilgan: 2026-04-14 O'qish vaqti: 10 daq

Fastfile — Ruby tilidagi Fastlane konfiguratsiya fayli bo‘lib, mobil ilovalarni qurish, sinovdan o‘tkazish va yetkazib berish uchun avtomatlashtirish stsenariylarini belgilaydi. Fayl loyiha ildizidagi fastlane katalogida joylashgan va lanes — nomlangan harakatlar ketma-ketligi deklaratsiyalarini o‘z ichiga oladi. Fastlane Docs, 2025 ma’lumotlariga ko‘ra, mobil loyihalarning 70% i CI/CD jarayonlari uchun Fastfile dan foydalanadi. Fastfile o‘nlab bash skriptlarini yagona deklarativ quvur liniyasi tavsifi bilan almashtiradi.

Asosiy fikrlar

  • Fastfile — fastlane/ katalogidagi Ruby tilidagi Fastlane konfiguratsiya fayli
  • Lane — action ketma-ketligi va xato boshqaruvi bilan nomlangan stsenariy
  • Action — parametrlarga ega o‘rnatilgan Fastlane buyrug‘i (gym, scan, match, deliver)
  • Private lane — to‘g‘ridan-to‘g‘ri ishga tushirilmasdan boshqa lanes dan chaqiriladigan ichki stsenariy
  • Parametrlar — option orqali lane ga qiymatlarni uzatish va o‘zgaruvchilar orqali kirish

Fastfile nima va nima uchun kerak

Fastfile — Ruby tilida yozilgan va loyiha ildizidagi fastlane katalogida joylashgan asosiy Fastlane konfiguratsiya fayli. U ilovani qurish, sinovdan o‘tkazish, kodni imzolash va yetkazib berish uchun barcha avtomatlashtirish stsenariylarini (lanes) belgilaydi. Fastfile o‘nlab bash skriptlari, Makefile va qo‘llanmalarni yagona deklarativ CI/CD quvur liniyasi tavsifi bilan almashtiradi.

Fastfile ga ehtiyoj loyiha turli dasturchi mashinalari va CI/CD serverlarida takrorlanadigan qurilishlarni talab qilganda paydo bo‘ladi. Har bir dasturchi muhitni qo‘lda sozlash o‘rniga, Fastfile barcha qadamlarni Git da versiyalanishi, ko‘rib chiqilishi va loyihalar o‘rtasida qayta ishlatilishi mumkin bo‘lgan kodda qayd etadi. Yagona Fastfile dasturchi mashinasidagi qurilish CI/CD serveridagi qurilish bilan bir xil bo‘lishini kafolatlaydi.

Fastfile platformalarni default_platform direktivasi orqali qo‘llab-quvvatlaydi. Bitta Fastfile da iOS, Android va macOS uchun stsenariylarni tasvirlab, ularni platform :ios va platform :android bloklarida guruhlash mumkin. Bu, ayniqsa, iOS va Android qurilishlari umumiy joylashtirish mantiqiga ega, ammo turli qurish vositalariga ega bo‘lgan kross-platforma loyihalari uchun qulaydir.

Fastfile tuzilishi: lanes, actions va parametrlar

Fastfile uchta asosiy elementdan iborat: platforma deklaratsiyasi (default_platform), lanes ta‘riflari va yordamchi funksiyalarni sozlash. Har bir lane kalit so‘z lane bilan boshlanadi, undan keyin stsenariy nomi (Ruby belgisi), actions ketma-ketligi bilan tana va error, success yoki ensure xato boshqaruvi bloklari keladi.

Actions Fastfile da — Hash ko‘rinishidagi parametrlarga ega o‘rnatilgan Fastlane funksiyalariga chaqiruvlar. Masalan, gym(scheme: 'App', export_method: 'app-store') ko‘rsatilgan parametrlar bilan iOS ilovasini qurishni ishga tushiradi. Har bir action o‘zgaruvchida saqlanishi va keyingi actions da ishlatilishi mumkin bo‘lgan natijani qaytaradi — bu lane ichida shartli mantiq qurishga imkon beradi.

Fastfile Ruby dagi ENV standart mexanizmi orqali muhit o‘zgaruvchilarini qo‘llab-quvvatlaydi. Nozik ma’lumotlar (parollar, tokenlar, kalitlar) Fastfile da saqlanmasligi kerak — CI/CD tizimining muhit o‘zgaruvchilaridan yoki .gitignore ga qo‘shilgan .env faylidan foydalaning. Fastlane ishga tushirilganda fastlane katalogidan .env fayllarini avtomatik yuklaydi.

Appfile va Matchfile

Fastfile bilan birga fastlane katalogida qo‘shimcha konfiguratsiya fayllari joylashadi. Appfile ilova identifikatorlarini (app_identifier), Apple ID va Team ID ni o‘z ichiga oladi — bu ma’lumotlar barcha actions da avtomatik almashtiriladi, har bir lane da takrorlanishni bartaraf etadi. Matchfile match uchun sozlamalarni saqlaydi: Git ombori URL i, profil turlari va shifrlash kaliti.

Konfiguratsiyani bir nechta fayllarga bo‘lish turli muhitlarga ega loyihalarni qo‘llab-quvvatlashni osonlashtiradi. Masalan, staging va production uchun Matchfile omborida alohida tarmoqlar yaratish yoki CI/CD tizimida muhit o‘zgaruvchilari orqali parametrlarni bekor qilish mumkin.

ruby
# Fastfile ning asosiy tuzilishi
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 sintaksisi: lanes yozish

Fastfile sintaksisi avtomatlashtirish stsenariylarining o‘qilishi uchun maxsus ishlab chiqilgan Ruby DSL (Domain Specific Language) ga asoslangan. Lane lane :name do ... end konstruksiyasi orqali e‘lon qilinadi, bu yerda name terminal yoki CI/CD tizimidan ishga tushirish uchun fastlane name buyrug‘iga aylanadigan Ruby belgisidir.

Lane ichida mantiqiy tarmoqlanish uchun Ruby ning shartli operatorlaridan if, unless, case foydalanish mumkin. Shuningdek, qiymat massivlarini qayta ishlash uchun each va while siklari mavjud. Fastlane lane hayot aylanish hodisalarini boshqarish uchun maxsus before_all, after_all metodlari va error bloklarini taqdim etadi.

Lane parametrlari options hash orqali uzatiladi. fastlane build --option_name value ishga tushirilganda qiymat lane ichida options[:option_name] ga tushadi. Uzatiladigan parametrlar turlarini nazorat qilish uchun optional: true orqali standart qiymatlar va type validatsiyasini o‘rnatish mumkin.

ruby
# Parametrlar va shartli mantiq bilan 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 yetkazib berish uchun Fastfile namunasi

iOS loyihasi uchun to‘liq Fastfile bog‘liqliklarni o‘rnatish, sinovdan o‘tkazish, qurish va TestFlight va App Store ga joylashtirish uchun lanes ni o‘z ichiga oladi. Ichki sinov uchun commit dan TestFlight da nashrga qadar odatdagi CI/CD jarayonini qamrab oluvchi misolni ko‘rib chiqamiz.

ruby
# iOS CI/CD yetkazib berish uchun 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: 'Ichki sinov uchun TestFlight ga yuklandi'
  )
end

Ushbu misolda before_all bloki har bir lane dan oldin bajariladi va bog‘liqliklarni o‘rnatadi. Lane tests ikkita qurilmada UI va Unit testlarini ishga tushiradi. Lane build_appstore match orqali kodni imzolaydi va bitcode bilan IPA quradi. Lane deploy_testflight to‘liq yetkazib berish uchun barcha qadamlarni birlashtiradi.

Bir nechta targetlar bilan joylashtirish

Bir nechta targetga ega loyihalar (asosiy ilova, watchOS, vidjet, Notification Service Extension) har bir target uchun alohida lanes talab qiladi. Fastfile da parametr sifatida sxema nomi va qurish yo‘lini qabul qiluvchi universal lane :deploy_target yaratish mumkin. Bu fastlane deploy_target scheme:Widget orqali barcha kengaytmalar uchun joylashtirishni ishga tushirishga imkon beradi.

Bir nechta targetlarni tashkil qilish uchun lane ichida sxemalar massivi va each siklidan foydalaning. Fastlane parallel: true bayrog‘i orqali bir nechta sxemalarning parallel qurilishini qo‘llab-quvvatlaydi, bu kengaytmalarga ega ilovalar uchun umumiy CI/CD quvur liniyasi vaqtini qisqartiradi.

Android qurish uchun Fastfile namunasi

Android loyihasi uchun Fastfile Gradle vazifalarini ishga tushirish uchun gradle action va Google Play da nashr qilish uchun supply action dan foydalanadi. iOS dan farqli o‘laroq, Android match talab qilmaydi, lekin ombordan tashqarida saqlanadigan va muhit o‘zgaruvchilari orqali uzatiladigan Keystore dan foydalanadi.

ruby
# Android CI/CD qurish uchun 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 ilovasini imzolash uchun build.gradle da signingConfigs ni sozlang va Keystore parametrlarini muhit o‘zgaruvchilari orqali uzating: ANDROID_KEYSTORE_PATH, ANDROID_KEYSTORE_PASSWORD, ANDROID_KEY_ALIAS va ANDROID_KEY_PASSWORD. Fastlane qurilgan AAB yoki APK ni imzolash uchun tizim apksigner dan avtomatik foydalanadi.

Fastfile da Android imzolash

Fastfile da Android imzolashni sozlash uchun sign_android action dan foydalaning yoki build.gradle dagi signingConfigs ga tayanishingiz mumkin. Fastlane Gradle orqali apksigner bilan integratsiyalanadi — gradle task da SIGNING_CONFIG bayrog‘ining uzatilishi muhit o‘zgaruvchilaridagi parametrlar bilan imzolashni faollashtiradi. Bu Google Play Console ga yuklashdan oldin AAB fayllarini imzolashga imkon beradi.

CI/CD da Keystore ni xavfsiz saqlash uchun Base64 kodlash va muhit o‘zgaruvchilaridan foydalaning. Fastlane o‘zgaruvchidan Keystore ni dekodlaydigan va before_all bosqichida vaqtinchalik faylga saqlaydigan setup_keystore action ini qo‘llab-quvvatlaydi. Lane tugagandan so‘ng, sertifikatlar sizib chiqishining oldini olish uchun vaqtinchalik fayl avtomatik o‘chiriladi.

Private lanes va guruhlardan foydalanish

Private lanes (yopiq stsenariylar) — buyruq satridan to‘g‘ridan-to‘g‘ri chaqirilmaydigan, ammo Fastfile ichidagi boshqa lanes dan chaqirish uchun mavjud bo‘lgan lanes dir. Private lane private_lane :name do ... end konstruksiyasi orqali e‘lon qilinadi va mustaqil stsenariylar sifatida ma’noga ega bo‘lmagan takrorlanuvchi qadamlarni inkapsulyatsiya qilish uchun ishlatiladi.

Private lanes takrorlanuvchi mantiqni guruhlash uchun idealdir: bog‘liqliklarni o‘rnatish, muhitni sozlash, bildirishnomalarni yuborish. Masalan, bir nechta joylashtirish lanes dan chaqiriladigan, ammo xatolarning oldini olish uchun dasturchi tomonidan to‘g‘ridan-to‘g‘ri ishga tushirilishi mumkin bo‘lmagan private lane :setup_signing yaratish mumkin.

ruby
# Private lane va guruhlash
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 bloklari orqali lanes ni guruhlash bitta Fastfile da iOS va Android uchun stsenariylarni ajratishga imkon beradi. platform :ios do ... end va platform :android do ... end konstruksiyalari tegishli platformaning lanes larini izolyatsiya qiladi, umumiy private lanes esa qayta foydalanish uchun platforma bloklaridan tashqariga chiqarilishi mumkin.

Lanes ga parametrlarni uzatish

Parametrlar mexanizmi Fastfile da lanes larni moslashuvchan va qayta ishlatiladigan qilishga imkon beradi. Parametrlar ishga tushirish vaqtida buyruq satri orqali uzatiladi: fastlane build scheme:App export_method:appstore. Lane ichida qiymatlar lane blokiga argument sifatida uzatiladigan options hash orqali mavjud.

Fastlane OptionalHash orqali validatsiya bilan tiplangan parametrlarni qo‘llab-quvvatlaydi. Qiymat turini (String, Boolean, Integer), standart qiymatni va avtomatik hujjatlashtirish uchun tavsifni o‘rnatish mumkin. Shuningdek, parametrlarni uzatishning muqobil usuli sifatida muhit o‘zgaruvchilari mavjud, bu CI/CD tizimlari uchun qulaydir.

ruby
# Turlarni validatsiya qilish bilan parametrlar
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: "Qurish #{options[:scheme]} tugallandi")
end

# Ishga tushirish: fastlane build scheme:MyApp export_method:appstore

Barcha ixtiyoriy parametrlar uchun standart qiymatlardan foydalanish tavsiya etiladi, shunda lane har bir argumentni aniq ko‘rsatmasdan ishga tushirilishi mumkin. Majburiy parametrlar uchun lane boshida qiymat mavjudligini tekshiring va UI.user_error! orqali tushunarli xato xabari bilan bajarishni to‘xtating.

Tez-tez beriladigan savollar

Mobil ishlanmada Fastfile nima?

Fastfile — Ruby tilidagi Fastlane konfiguratsiya fayli bo‘lib, iOS va Android ilovalarini qurish, sinovdan o‘tkazish va yetkazib berish uchun avtomatlashtirish stsenariylarini belgilaydi. Fayl fastlane katalogida joylashgan va CI/CD jarayonlari uchun lanes — nomlangan harakatlar ketma-ketligini o‘z ichiga oladi.

iOS uchun oddiy Fastfile qanday yoziladi?

Loyiha ildizida fastlane katalogi va Fastfile faylini yarating. default_platform(:ios) qo‘shing, :build nomli lane ni e‘lon qiling, ichida bog‘liqliklarni o‘rnatish uchun cocoapods va qurish uchun gym ni chaqiring. Loyiha ildizidagi terminaldan fastlane build orqali ishga tushiring.

Private lane oddiy lane dan qanday farq qiladi?

Private lane lane o‘rniga private_lane orqali e‘lon qilinadi va buyruq satridan to‘g‘ridan-to‘g‘ri chaqirilmaydi. U faqat Fastfile ichidagi boshqa lanes dan chaqirish uchun mavjud. Mustaqil stsenariylar sifatida ma’noga ega bo‘lmagan takrorlanuvchi qadamlarni inkapsulyatsiya qilish uchun ishlatiladi.

Fastfile lane iga parametrlarni qanday uzatish mumkin?

Parametrlar buyruq satri orqali uzatiladi: fastlane build scheme:App va lane ichida options hash orqali mavjud. || operatori orqali standart qiymatlarni o‘rnatish mumkin, majburiy parametrlar uchun esa lane boshida raise yoki UI.user_error! orqali mavjudligini tekshirish mumkin.

Fastfile loyihada qayerda joylashishi kerak?

Fastfile loyiha ildizidagi fastlane katalogida joylashishi kerak. Misol: /Users/user/projects/MyApp/fastlane/Fastfile. Fastlane loyiha ildizidan ishga tushirilganda faylni avtomatik topadi. Qo‘shimcha ravishda, xuddi shu katalogda Appfile, Matchfile va boshqa konfiguratsiya fayllari bo‘lishi mumkin.

Xulosa

  • Fastfile — mobil ilovalar uchun CI/CD stsenariylarini belgilaydigan Ruby tilidagi Fastlane konfiguratsiya fayli
  • Lane — parametrlar va xato boshqaruvi bilan actions ketma-ketligini birlashtiruvchi nomlangan stsenariy
  • Private lane — to‘g‘ridan-to‘g‘ri ishga tushirish uchun mavjud bo‘lmagan, takrorlanuvchi mantiqni inkapsulyatsiya qiluvchi yopiq stsenariy
  • iOS Fastfile before_all, testlar (scan), qurish (gym) va joylashtirish (pilot, deliver) uchun lanes ni o‘z ichiga oladi
  • Android Fastfile qurish uchun gradle action va Google Play da nashr qilish uchun supply action dan foydalanadi
  • Parametrlar buyruq satri orqali uzatiladi, standart qiymatlar bilan options hash orqali mavjud
  • Fastfile loyiha bilan birga Git da versiyalanadi, jamoa barcha mashinalarida takrorlanadigan qurilishlarni ta’minlaydi

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.

Loyihani muhokama qilish

Shuningdek o'qing