Fastline — Ruby dilində Fastlane konfiqurasiya faylıdır, mobil tətbiqlərin qurulması, test edilməsi və çatdırılması üçün avtomatlaşdırma ssenarilərini təyin edir. Fayl layihənin kökündəki fastlane qovluğunda yerləşir və lanes — adlandırılmış hərəkət ardıcıllıqlarının bəyannamələrini ehtiva edir. Fastlane Docs, 2025 məlumatına görə, mobil layihələrin 70%-i CI/CD prosesləri üçün Fastfile istifadə edir. Fastfile onlarla bash skriptini vahid deklarativ boru kəməri təsviri ilə əvəz edir.
Əsas məqamlar
Fastfile — Ruby dilində yazılmış və layihənin kökündəki fastlane qovluğunda yerləşən əsas Fastlane konfiqurasiya faylıdır. O, tətbiqin qurulması, test edilməsi, kod imzalanması və çatdırılması üçün bütün avtomatlaşdırma ssenarilərini (lanes) təyin edir. Fastfile onlarla bash skriptini, Makefile və əl təlimatlarını vahid deklarativ CI/CD boru kəməri təsviri ilə əvəz edir.
Fastfile-ə ehtiyac, layihə müxtəlif tərtibatçı maşınlarında və CI/CD serverlərində təkrarlana bilən qurulmalar tələb etdikdə yaranır. Hər bir tərtibatçının mühiti əl ilə konfiqurasiya etməsi əvəzinə, Fastfile bütün addımları Git-də versiyalana, nəzərdən keçirilə və layihələr arasında təkrar istifadə oluna bilən kodda qeyd edir. Vahid Fastfile tərtibatçı maşınındakı qurulmanın CI/CD serverindəki qurulma ilə eyni olmasını təmin edir.
Fastfile platformaları default_platform direktivi vasitəsilə dəstəkləyir. Bir Fastfile-də iOS, Android və macOS üçün ssenariləri təsvir edə, onları platform :ios və platform :android bloklarında qruplaşdırmaq olar. Bu, xüsusilə iOS və Android qurulmalarının ümumi yerləşdirmə məntiqinə, lakin fərqli qurulu alətlərinə malik olduğu çarpaz platformalı layihələr üçün əlverişlidir.
Fastfile üç əsas elementdən ibarətdir: platforma bəyannaməsi (default_platform), lanes tərifləri və köməkçi funksiyaların konfiqurasiyası. Hər bir lane açar söz lane ilə başlayır, ardınca ssenari adı (Ruby simvolu), actions ardıcıllığı olan gövdə və error, success və ya ensure xəta idarəetmə blokları gəlir.
Actions Fastfile-də — Hash şəklində parametrlərlə daxili Fastlane funksiyalarının çağırışlarıdır. Məsələn, gym(scheme: 'App', export_method: 'app-store') göstərilən parametrlərlə iOS tətbiqinin qurulmasını işə salır. Hər bir action dəyişəndə saxlanıla və sonrakı actions-da istifadə oluna bilən nəticə qaytarır — bu, lane daxilində şərti məntiq qurmağa imkan verir.
Fastfile Ruby-də ENV standart mexanizmi vasitəsilə mühit dəyişənlərini dəstəkləyir. Həssas məlumatlar (parollar, tokenlər, açarlar) Fastfile-də saxlanılmamalıdır — CI/CD sisteminin mühit dəyişənlərindən və ya .gitignore-a əlavə edilmiş .env faylından istifadə edin. Fastlane işə salındıqda fastlane qovluğundan .env fayllarını avtomatik yükləyir.
Fastfile ilə birlikdə fastlane qovluğunda əlavə konfiqurasiya faylları yerləşir. Appfile tətbiq identifikatorlarını (app_identifier), Apple ID və Team ID ehtiva edir — bu məlumatlar bütün actions-da avtomatik əvəz olunur, hər lane-də təkrarlanmağı aradan qaldırır. Matchfile match üçün ayarları saxlayır: Git depo URL-i, profil növləri və şifrələmə açarı.
Konfiqurasiyanın bir neçə fayla bölünməsi müxtəlif mühitləri olan layihələrə qulluq etməyi asanlaşdırır. Məsələn, staging və production üçün Matchfile deposunda ayrıca budaqlar yarada və ya CI/CD sistemində mühit dəyişənləri vasitəsilə parametrləri ləğv edə bilərsiniz.
# Fastfile-in əsas strukturu
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 avtomatlaşdırma ssenarilərinin oxunaqlılığı üçün xüsusi hazırlanmış Ruby DSL (Domain Specific Language) əsaslanır. Lane lane :name do ... end konstruksiyası ilə bəyan edilir, burada name terminaldan və ya CI/CD sistemindən işə salmaq üçün fastlane name əmrinə çevrilən Ruby simvoludur.
Lane daxilində məntiqi budaqlama üçün Ruby-nin şərti operatorlarından if, unless, case istifadə etmək olar. Həmçinin dəyər massivlərini emal etmək üçün each və while dövrləri mövcuddur. Fastlane lane həyat dövrü hadisələrini idarə etmək üçün xüsusi before_all, after_all metodları və error blokları təqdim edir.
Lane parametrləri options hash vasitəsilə ötürülür. fastlane build --option_name value işə salındıqda dəyər lane daxilində options[:option_name]-ə düşür. optional: true vasitəsilə standart dəyərlər və ötürülən parametrlərin növlərini idarə etmək üçün type validasiyası təyin etmək olar.
# Parametrlər və şərti məntiqlə 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 layihəsi üçün tam Fastfile asılılıqların quraşdırılması, test edilməsi, qurulması və TestFlight və App Store-a yerləşdirilməsi üçün lanes ehtiva edir. Daxili test üçün commit-dən TestFlight-da nəşrə qədər tipik CI/CD prosesini əhatə edən nümunəyə baxaq.
# iOS CI/CD çatdırılması üçün 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: 'Daxili test üçün TestFlight-a yükləndi'
)
end
Bu nümunədə before_all bloku hər lane-dən əvvəl icra olunur və asılılıqları quraşdırır. Lane tests iki cihazda UI və Vahid testlərini işə salır. Lane build_appstore match vasitəsilə kodu imzalayır və bitcode ilə IPA qurur. Lane deploy_testflight tam çatdırılma üçün bütün addımları birləşdirir.
Çoxlu targetləri olan layihələr (əsas tətbiq, watchOS, vidjet, Notification Service Extension) hər target üçün ayrıca lanes tələb edir. Fastfile-də parametr kimi sxem adını və qurulu yolunu qəbul edən universal lane :deploy_target yarada bilərsiniz. Bu, fastlane deploy_target scheme:Widget vasitəsilə bütün genişləndirmələr üçün yerləşdirməni işə salmağa imkan verir.
Çoxlu targetləri təşkil etmək üçün lane daxilində sxemlər massivi və each dövrü istifadə edin. Fastlane parallel: true flagı vasitəsilə bir neçə sxemin paralel qurulmasını dəstəkləyir, bu da genişləndirmələri olan tətbiqlər üçün ümumi CI/CD boru kəməri vaxtını qısaldır.
Android layihəsi üçün Fastfile Gradle tapşırıqlarını işə salmaq üçün gradle action və Google Play-də nəşr üçün supply action istifadə edir. iOS-dan fərqli olaraq, Android match tələb etmir, lakin depodan kənarda saxlanılan və mühit dəyişənləri vasitəsilə ötürülən Keystore-dan istifadə edir.
# Android CI/CD qurulması üçün 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 tətbiqinin imzalanması üçün build.gradle-də signingConfigs konfiqurasiya edin və Keystore parametrlərini mühit dəyişənləri vasitəsilə ötürün: ANDROID_KEYSTORE_PATH, ANDROID_KEYSTORE_PASSWORD, ANDROID_KEY_ALIAS və ANDROID_KEY_PASSWORD. Fastlane qurulmuş AAB və ya APK-nı imzalamaq üçün sistem apksigner-dən avtomatik istifadə edir.
Fastfile-də Android imzalanmasını konfiqurasiya etmək üçün sign_android action-dan istifadə edin və ya build.gradle-də signingConfigs-ə etibar edin. Fastlane Gradle vasitəsilə apksigner ilə inteqrasiya olunur — gradle task-da SIGNING_CONFIG flagının ötürülməsi mühit dəyişənlərindən parametrlərlə imzalamanı aktivləşdirir. Bu, Google Play Console-a yükləmədən əvvəl AAB fayllarını imzalamağa imkan verir.
CI/CD-də Keystore-un təhlükəsiz saxlanması üçün Base64 kodlaşdırması və mühit dəyişənlərindən istifadə edin. Fastlane dəyişəndən Keystore-u dekod edən və before_all mərhələsində müvəqqəti fayla saxlayan setup_keystore action-ını dəstəkləyir. Lane tamamlandıqdan sonra sertifikat sızmasının qarşısını almaq üçün müvəqqəti fayl avtomatik silinir.
Private lanes (qapalı ssenarilər) — birbaşa əmr sətrindən çağırıla bilməyən, lakin Fastfile daxilində digər lanes-dən çağırış üçün əlçatan olan lanes-dir. Private lane private_lane :name do ... end konstruksiyası ilə bəyan edilir və müstəqil ssenarilər kimi mənası olmayan təkrarlanan addımları kapsullaşdırmaq üçün istifadə olunur.
Private lanes təkrarlanan məntiqin qruplaşdırılması üçün idealdır: asılılıqların quraşdırılması, mühitin konfiqurasiyası, bildirişlərin göndərilməsi. Məsələn, bir neçə yerləşdirmə lane-dən çağırılan, lakin səhvlərin qarşısını almaq üçün tərtibatçı tərəfindən birbaşa işə salınması mümkün olmayan private lane :setup_signing yarada bilərsiniz.
# Private lane və qruplaşdırma
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 blokları vasitəsilə lanes qruplaşdırılması bir Fastfile-də iOS və Android üçün ssenariləri ayırmağa imkan verir. platform :ios do ... end və platform :android do ... end konstruksiyaları müvafiq platformanın lanes-lərini təcrid edir, ümumi private lanes isə təkrar istifadə üçün platforma bloklarından kənara çıxarıla bilər.
Parametrlər mexanizmi Fastfile-də lanes-ləri çevik və təkrar istifadə oluna bilən etməyə imkan verir. Parametrlər işə salma zamanı əmr sətri vasitəsilə ötürülür: fastlane build scheme:App export_method:appstore. Lane daxilində dəyərlər lane blokuna arqument kimi ötürülən options hash vasitəsilə əlçatandır.
Fastlane OptionalHash vasitəsilə validasiya ilə tipləşdirilmiş parametrləri dəstəkləyir. Dəyər növü (String, Boolean, Integer), standart dəyər və avtomatik sənədləşdirmə üçün təsvir təyin etmək olar. Həmçinin parametrlərin ötürülməsinin alternativ yolu kimi mühit dəyişənləri mövcuddur, bu CI/CD sistemləri üçün əlverişlidir.
# Tiplərin validasiyası ilə parametrlər
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: "Qurma #{options[:scheme]} tamamlandı")
end
# İşə salma: fastlane build scheme:MyApp export_method:appstore
Bütün isteğe bağlı parametrlər üçün standart dəyərlərdən istifadə etmək tövsiyə olunur ki, lane hər arqumenti açıq şəkildə göstərmədən işə salına bilsin. Məcburi parametrlər üçün lane əvvəlində dəyərin mövcudluğunu yoxlayın və UI.user_error! vasitəsilə başa düşülən xəta mesajı ilə icranı dayandırın.
Tez-tez verilən suallar
Fastfile — Ruby dilində Fastlane konfiqurasiya faylıdır, iOS və Android tətbiqlərinin qurulması, test edilməsi və çatdırılması üçün avtomatlaşdırma ssenarilərini təyin edir. Fayl fastlane qovluğunda yerləşir və CI/CD prosesləri üçün lanes — adlandırılmış hərəkət ardıcıllıqlarını ehtiva edir.
Layihənin kökündə fastlane qovluğu və Fastfile faylı yaradın. default_platform(:ios) əlavə edin, :build adlı lane bəyan edin, daxildə asılılıqları quraşdırmaq üçün cocoapods və qurulma üçün gym çağırın. Layihənin kökündə terminaldan fastlane build vasitəsilə işə salın.
Private lane lane əvəzinə private_lane vasitəsilə bəyan edilir və birbaşa əmr sətrindən çağırıla bilməz. O, yalnız Fastfile daxilində digər lanes-dən çağırış üçün əlçatandır. Müstəqil ssenarilər kimi mənası olmayan təkrarlanan addımları kapsullaşdırmaq üçün istifadə olunur.
Parametrlər əmr sətri vasitəsilə ötürülür: fastlane build scheme:App və lane daxilində options hash vasitəsilə əlçatandır. || operatoru vasitəsilə standart dəyərlər təyin etmək, məcburi parametrlər üçün isə lane əvvəlində raise və ya UI.user_error! vasitəsilə mövcudluğu yoxlamaq olar.
Fastfile layihənin kökündəki fastlane qovluğunda yerləşməlidir. Nümunə: /Users/user/projects/MyApp/fastlane/Fastfile. Fastlane layihənin kökündən işə salındıqda faylı avtomatik tapır. Əlavə olaraq eyni qovluqda Appfile, Matchfile və digər konfiqurasiya faylları ola bilər.
Nəticə
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