Fastlane — iOS və Android üçün mobil tətbiqlərin build və nəşrinin avtomatlaşdırılması alətidir. Fastlane kod imzalanması, build, testlərin işə salınması, ekran görüntülərinin yaradılması və App Store Connect ilə Google Play Console-a yükləməni idarə edir. Bu mobil inkişafda CI/CD üçün de-facto standartdır.
Əsas nəticələr
Fastlane — mobil inkişafın rutin tapşırıqlarını avtomatlaşdıran open-source alətdir: tətbiqin build edilməsi, testlərin işə salınması, ekran görüntülərinin yaradılması, sertifikatların idarə edilməsi, build-lərin TestFlight, App Store və Google Play-ə yüklənməsi. Fastlane Ruby ilə yazılmışdır və gem install fastlane əmri ilə RubyGems vasitəsilə yayılır.
Fastlane 2015-ci ildə iOS aləti kimi meydana çıxdı, lakin tez bir zamanda Android-ə genişləndi. Bu gün bu, onlarla actions — lanes adlanan ssenarilərdə birləşdirilə bilən daxili əmrlər ekosistemidir. Hər bir lane konkret tapşırığı yerinə yetirir: məsələn, build_release release versiyasını yığır, deploy_beta isə build-i TestFlight-a yükləyir.
Fastlane Uber, Airbnb, Snapchat, Twitter və Shopify kimi şirkətlər tərəfindən istifadə olunur. 2024-cü il sorğusuna görə, iOS tərtibatçılarının 60%-dən çoxu layihələrində Fastlane tətbiq edir. Alət həm lokal işə salmanı, həm də bulud CI sistemləri ilə inteqrasiyanı dəstəkləyir və bu, onu mobil CI/CD üçün de-fakto standarta çevirir.
# Fastlane-in quraşdırılması
sudo gem install fastlane -NV
# Layihədə inisializasiya
fastlane init
İnisializasiyadan sonra Fastlane üç faylı olan fastlane/ qovluğu yaradır: Fastfile (ssenarilər), Appfile (tətbiq parametrləri) və Matchfile (sertifikat parametrləri). Bu struktur hər iki platforma — iOS və Android üçün vahid qalır.
Fastlane-in əsas konfiqurasiya faylı — Fastfile. O, layihənin kökündə fastlane/ qovluğunda yerləşir. Fastfile Ruby ilə yazılır: hər bir lane — actions ardıcıllığı olan adlandırılmış blokdur. Lane parametrlər qəbul edə, digər lanes-ləri çağıra və dəyərlər qaytara bilər.
# fastlane/Fastfile — iOS üçün nümunə
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
Hər bir lane fastlane ios beta və ya fastlane ios release əmri ilə işə salınır. Fastfile dəyişənləri, şərtləri, dövrləri və xarici skriptləri çağırmağı dəstəkləyir — bu tam hüquqlu Ruby faylıdır. Tərtibatçılar private_lane (lokal metodlar) və digər Fastfile-dan import vasitəsilə kodu təkrar istifadə edə bilərlər.
Fastlane əksər tapşırıqlar üçün 200-dən çox daxili actions təqdim edir. Lazım olan action yoxdursa, Ruby ilə öz action-unuzu yaza və ya sh("...") vasitəsilə shell əmrini çağıra bilərsiniz. Actions parametrlər qəbul edə bilər — build parametrləri, yollar, giriş tokenləri — və növbəti addımlarda istifadə üçün nəticə qaytara bilər.
Fastlane iOS üçün üç əsas problemi həll edir: sertifikatların və provisioning profile-ların idarə edilməsi, Xcode vasitəsilə IPA-nın yığılması və App Store Connect ilə TestFlight-da nəşr. Bu tapşırıqların hər biri ayrıca action ilə əhatə olunur.
match — sertifikatların idarə edilməsi üçün action. Bütün sertifikatları və provisioning profile-ları şifrələnmiş Git repozitoriyasında saxlayır. Hər bir tərtibatçı və CI server eyni fayl dəstindən istifadə edir ki, bu da konfliktləri və müddəti bitmiş sertifikatlarla bağlı problemləri aradan qaldırır. Match yeni cihazlar əlavə edildikdə profilləri avtomatik yeniləyir.
sigh — Apple Developer Portal vasitəsilə provisioning profile yaradır və endirir. Müəyyən tip üçün profili tez əldə etmək lazım olduqda istifadə olunur: development, ad-hoc və ya appstore.
gym — IPA-nın yığılması. Gym xcodebuild-i optimal parametrlərlə sarır, avtomatik olaraq sxemi, konfiqurasiyanı, export options seçir və imzalanmış IPA yaradır. Nümunə: gym(scheme: "MyApp", export_method: "app-store").
pilot — TestFlight-ın idarə edilməsi. Build yükləyir, testerlər əlavə edir, rəy statusunu izləyir. deliver — App Store-da tam nəşr, o cümlədən metadata, ekran görüntüləri, qiymət və versiyalar.
# iOS tətbiqinin yığılması və nəşri
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 ilə işləmək üçün giriş tokenləri tələb olunur. Fastlane iki autentifikasiya üsulunu dəstəkləyir: App Store Connect API Key (tövsiyə olunan) və iki faktorlu autentifikasiya ilə Apple ID. API açarları CI/CD üçün daha əlverişlidir, çünki interaktiv parol daxil etmə tələb etmir.
| Action | Məqsəd | Əl analoqu |
|---|---|---|
match | Sertifikatların və profillərin idarə edilməsi | Apple Developer Portal |
sigh | Provisioning profile yaradılması | Xcode + Developer Portal |
gym | IPA yığılması | xcodebuild + xcrun |
pilot | TestFlight-a yükləmə | Xcode Organizer |
deliver | App Store-da nəşr | App Store Connect Web |
scan | UI testlərin işə salınması | xcodebuild test |
Android-də Fastlane Gradle vasitəsilə build, APK və AAB imzalanması, Google Play Console və Firebase App Distribution-a yükləməni avtomatlaşdırır.
gradle — Android üçün əsas action. Lazım olan tapşırıqlarla Gradle wrapper-i çağırır: gradle(task: "assembleRelease") və ya AAB üçün gradle(task: "bundleRelease"). Flaqlar, ətraf mühit dəyişənləri və gradle.properties yolunu ötürmək olar.
supply — APK və ya AAB-nı Google Play Console-a yükləyir. Supply versiyaları, trekləri (internal, alpha, beta, production), buraxılış qeydlərini, qiyməti və yayılma ölkəsini idarə edir. Nümunə: supply(track: "beta", release_status: "completed").
screengrab — Google Play üçün ekran görüntülərinin yaradılması. Müxtəlif cihazlarda və dillərdə tətbiq ekranlarının görüntülərini çəkən instrumentation testlərini işə salır. Alınan ekran görüntüləri supply vasitəsilə yüklənir.
# Android tətbiqinin yığılması və nəşri
lane :deploy_android do
gradle(task: "clean bundleRelease")
supply(
track: "beta",
release_status: "completed",
version_code: 42
)
end
| Action | Məqsəd | Əl analoqu |
|---|---|---|
gradle | Gradle vasitəsilə build | ./gradlew assembleRelease |
supply | Google Play-ə yükləmə | Google Play Console Web |
screengrab | Ekran görüntülərinin yaradılması | Əl ekran görüntüsü + ImageMagick |
firebase_app_distribution | Firebase vasitəsilə paylama | Firebase Console Upload |
Fastlane CI/CD pipeline-larında işləmək üçün nəzərdə tutulmuşdur. O, qeyri-interaktiv rejimi, ətraf mühit dəyişənlərini və build artefaktlarını düzgün emal edir. Aşağıda — məşhur CI sistemləri ilə inteqrasiya nümunələri.
GitHub Actions-da Fastlane Ruby skripti kimi işə salınır. Tipik workflow: Ruby və Fastlane-in quraşdırılması, açarların konfiqurasiyası (sertifikatlar, API tokenləri secrets vasitəsilə), lane-in işə salınması. iOS üçün macOS runner tələb olunur; Android ubuntu-latest-də işləyir.
GitLab CI-da Fastlane .gitlab-ci.yml-də oxşar sxemlə istifadə olunur: asılılıqların quraşdırılması, fastlane-in işə salınması, artefaktların ötürülməsi. GitLab CI macOS və Linux runner-larını dəstəkləyir.
Bitrise — mobil tətbiqlər üçün ixtisaslaşmış CI/CD — Fastlane üçün daxili dəstəyə malikdir. Bitrise Workflow Fastlane Step-i çağıra və ya fastlane ilə ixtiyari skriptləri işə sala bilər. Bitrise sertifikatları öz Code Signing meneceri vasitəsilə idarə edir.
# Testlərin şərti işə salınması ilə CI/CD üçün 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 inteqrasiyasının vacib aspekti — sirlərin saxlanmasıdır. Fastlane dotenv vasitəsilə .env faylından və ətraf mühit dəyişənlərindən istifadə edir. iOS üçün kritik dəyişənlər: MATCH_PASSWORD, FASTLANE_APPLE_API_KEY, FASTLANE_APPLE_API_KEY_ID. Android üçün: SUPPLY_JSON_KEY_DATA — Google Play servis hesabının məzmunu.
Fastlane 200-dən çox daxili action ehtiva edir. Aşağıda — platforma və məqsəd göstərilməklə ən populyarların icmalı.
| Action | Platforma | Təsvir |
|---|---|---|
gym | iOS | Optimallaşdırılmış xcodebuild parametrləri ilə IPA yığılması |
match | iOS | Git vasitəsilə sertifikatların və provisioning profile-ların sinxronizasiyası |
pilot | iOS | Build-in TestFlight-a yüklənməsi və testerlərin idarə edilməsi |
deliver | iOS | Tətbiqin App Store-da metadata ilə nəşri |
scan | iOS | Hesabat generasiyası ilə unit və UI testlərinin işə salınması |
gradle | Android | Gradle tapşırıqlarının işə salınması: assemble, bundle, test |
supply | Android | APK və AAB-nin Google Play Console-a yüklənməsi |
screengrab | Android | Google Play üçün avtomatik ekran görüntüləri |
firebase_app_distribution | Android | Firebase vasitəsilə build-lərin paylanması |
snapshot | iOS | App Store üçün simulyatorlarda avtomatik ekran görüntüləri |
increment_build_number | iOS | Xcode layihəsində build nömrəsinin avtomatik artırılması |
appcenter_upload | Hər ikisi | Build-in App Center-ə yüklənməsi |
Lazım olan action-u tapmaq üçün fastlane action [ad] əmri istifadə olunur, o sənədləşməni, parametrləri və nümunələri göstərir. Tam siyahı lokal olaraq mövcuddur: fastlane actions.
Fastlane həmçinin plugins — yeni actions əlavə edən icma genişlənmələrini dəstəkləyir. Plaginlər fastlane add_plugin [ad] vasitəsilə quraşdırılır və RubyGems reyestrində mövcuddur. Məşhur plagin nümunələri: fastlane-plugin-versioning (versiyaların idarə edilməsi), fastlane-plugin-sentry (debug symbols-ın Sentry-ə yüklənməsi), fastlane-plugin-teams (Microsoft Teams-də bildirişlər).
Frequently Asked Questions
Fastlane — mobil tətbiqlərin build və nəşrinin avtomatlaşdırılması alətidir. Əl əməliyyatlarını — yığma, imzalama, mağazalara yükləmə — bir əmrlə əvəz etmək üçün lazımdır. Fastlane buraxılış vaxtını saatlardan dəqiqələrə endirir və nəşr zamanı insan səhvlərini aradan qaldırır.
Bəli. Fastlane hər iki platformanı müstəqil dəstəkləyir. iOS üçün macOS tələb olunur, Android üçün Linux kifayətdir. Bir Fastfile-da lanes-ləri platformalara görə bölmək olar: platform :ios do ... end və platform :android do ... end.
match action vasitəsilə. O, şifrələnmiş sertifikatları və provisioning profile-ları Git repozitoriyasında saxlayır. Hər bir tərtibatçı repozitoriyanı klonlayır, match faylları MATCH_PASSWORD dəyişənindən parolla şifrədən çıxarır və onları açar topasına quraşdırır. Bu "mənim maşınımda yığılır" problemini həll edir.
Bəli. Fastlane APK və IPA-nı Firebase App Distribution-a yükləmək üçün daxili firebase_app_distribution action-na malikdir. Həmçinin testerlər əlavə etmək üçün firebase_app_distribution_add_testers mövcuddur. Alternativ — App Center üçün appcenter_upload action.
Fastlane RubyGems vasitəsilə quraşdırılır: gem install fastlane -NV. iOS üçün Xcode ilə macOS tələb olunur; Android üçün — JDK və Android SDK ilə Linux və ya macOS. GitHub Actions-da Ruby və Fastlane quraşdırmaq üçün hazır ruby/setup-ruby action var. Ətraf mühit dəyişənləri CI sisteminin secrets vasitəsilə ötürülür.
Fastlane — build və nəşr tapşırıqlarının avtomatlaşdırılması üçün kitabxana və CLI-dir. Bitrise və Jenkins — tam CI/CD platformalarıdır. Fastlane onların daxilində işləyir: Jenkins Fastlane-i pipeline addımı kimi işə salır, Bitrise Fastlane-i xüsusi Step vasitəsilə çağırır. Fastlane CI sistemini əvəz etmir, onu mobil spesifikliklə tamamlayır.
Summary
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun