Lane — nədir, Fastlane-də yaradılması və istifadəsi

Müəllif: IT Sectr Dərc olunub: 2026-04-14 Oxuma vaxtı: 10 dəq

Lane — Fastlane-də mobil tətbiqin qurulması, test edilməsi və ya çatdırılması üçün hərəkətlər (actions) ardıcıllığını birləşdirən adlandırılmış avtomatlaşdırma ssenarisidir. Hər lane Ruby dilində Fastfile-də təyin edilir və terminaldan və ya CI/CD sistemindən bir əmrlə işə salına bilər. Fastlane Docs, 2025-ə görə, Fastfile-lərin 85%-i CI/CD-nin müxtəlif mərhələləri üçün üçdən çox lane ehtiva edir. Lane parametrlər qəbul edə, digər lanes-ləri çağıra və icra xətalarını idarə edə bilər.

Əsas məqamlar

  • Lane — Ruby dilində Fastfile-də adlandırılmış avtomatlaşdırma ssenarisi
  • Parametrlər — fastlane lane_name key:value işə salarkən options hash vasitəsilə dəyərlərin ötürülməsi
  • before_all/after_all — hər lane-dən əvvəl və sonra kodu icra etmək üçün bloklar
  • Private lane — yalnız digər lanes-lərdən çağırış üçün əlçatan olan ssenari
  • Error handling — xətaları idarə etmək və bildirişlər göndərmək üçün error bloku

Fastlane-də Lane nədir

Lane — Fastlane-in əsas tikinti bloku olub, adlandırılmış avtomatlaşdırma ssenarisini təyin edir. Hər lane müəyyən bir məqsədə çatmaq üçün yerinə yetirilən hərəkətlər (actions) ardıcıllığını təsvir edir: tətbiqi qurmaq, testləri işə salmaq, build-i mağazaya yükləmək və ya mühiti konfiqurasiya etmək. Lane Fastfile-də bəyan edilir və layihənin kök kataloqundan fastlane [lane_adı] əmri ilə işə salınır.

Lane konsepsiyası Ruby DSL-dən götürülmüşdür və ssenarilərin oxunaqlılığını təmin edir. Tərtibatçı bütün CI/CD prosesini başa düşülən adlar və parametrlərlə actions çağırışları ardıcıllığı kimi görür. Lane sadə (bir əmr) və ya mürəkkəb (şaxələnmə, dövrlər, digər lanes-lərin çağırışı) ola bilər.

Hər lane icradan sonra nəticə qaytarır — icra statusu və actions-dan məlumatları ehtiva edən obyekt. Nəticə digər lanes-lərdə istifadə oluna və ya qərarlar qəbul etmək üçün CI/CD sisteminə ötürülə bilər. Lane-də hər hansı action xəta ilə başa çatarsa, lane-in icrası dayandırılır və error bloku çağırılır.

Lane sintaksisi: bəyan edilməsi və işə salınması

Lane bəyan edilməsi sintaksisi sadə Ruby DSL nümunəsinə əsaslanır: lane açar sözü, Ruby simvolu (symbol) şəklində ssenari adı, do ... end bloku ssenari gövdəsi ilə. Lane adı platforma daxilində unikal olmalı və hərflər, rəqəmlər və alt xətlərdən ibarət olmalıdır.

Lane-in işə salınması əmr sətri vasitəsilə həyata keçirilir: fastlane build (:build adlı lane üçün) və ya bundle exec fastlane build (Fastlane Bundler vasitəsilə quraşdırılıbsa). Platforma lanes-ləri üçün fastlane ios build və ya fastlane android build istifadə edin.

ruby
# Sadə lane-in bəyan edilməsi
lane :test do
  scan(scheme: 'App', devices: ['iPhone 15'])
end

lane :build_and_deploy do
  cocoapods
  test
  gym(scheme: 'App', export_method: 'app-store')
  pilot(skip_waiting_for_build_processing: true)
end

# Başlatma: fastlane build_and_deploy

Lane parametrlər və ya mühit dəyişənlərinə əsaslanan şərti məntiq ehtiva edə bilər. Müəyyən şərtlərdə addımları atlamaq üçün if/unless istifadə edin. Bir lane-də çoxlu target və ya tətbiq sxemlərini qurmaq üçün əlverişli olan massivləri emal etmək üçün each dövrləri də mövcuddur.

Lane-dən dəyərin qaytarılması

Lane çağıran koda əlçatan olacaq dəyər qaytara bilər. Qaytarmaq üçün adi Ruby return və ya lane blokundakı son ifadə istifadə olunur. Qaytarılan dəyər sətir, rəqəm, hash və ya action nəticəsi ola bilər. Bu, bir lane-in nəticəsini qərarlar qəbul etmək üçün digər lane-də istifadə etməyə imkan verir.

Məsələn, :get_version lane-i Info.plist-dən tətbiqin cari versiyasını qaytara bilər, :deploy lane-i isə Slack-də mesaj yaratmaq üçün ondan istifadə edə bilər. Qaytarılan dəyərlər xüsusilə private lanes-lərdə faydalıdır, burada nəticə çağıran lane-də sonrakı emal üçün lazımdır.

Lanes parametrləri: ötürmə və idarəetmə

Lane parametrləri ssenariləri çevik və təkrar istifadə olunan edir. Lane əmr sətrindən işə salınarkən ötürülən options hash vasitəsilə parametrlər qəbul edir: fastlane deploy scheme:AppStore version:2.1.0. Lane daxilində parametrlər options[:scheme] və options[:version] kimi əlçatandır.

Məcburi parametrlər üçün lane-in əvvəlində dəyərin mövcudluğunu yoxlayın və aydın mesajla UI.user_error! çağırın. İstəyə bağlı parametrlər üçün || operatoru vasitəsilə standart dəyərlər təyin edin. Fastlane həmçinin options metodu vasitəsilə tipi, standart dəyəri və təsviri göstərməklə tipli parametrləri dəstəkləyir.

ruby
# Parametrlərin idarəsi ilə Lane
lane :deploy do |options|
  scheme = options[:scheme]
  version = options[:version] || '1.0.0'
  beta = options[:beta] || false

  UI.user_error!("Scheme göstərilməyib") unless scheme

  match(type: beta ? 'adhoc' : 'appstore')
  gym(scheme: scheme, export_method: beta ? 'ad-hoc' : 'app-store')

  if beta
    pilot(distribute_external: true)
  else
    deliver(submit_for_review: true)
  end
end

# Başlatma: fastlane deploy scheme:MyApp beta:true version:2.1.0

Lane daxilində mühit dəyişənləri ilə işləmək üçün ENV['VARIABLE_NAME'] istifadə edin. Fastlane avtomatik olaraq fastlane kataloqundan .env fayllarını yükləyir. Bu, həssas məlumatları — API açarları, şifrələr və tokenlər — Fastfile-də saxlamadan CI/CD mühitində ötürmək üçün standart üsuldur.

Parametrlərin validasiyası

Lane-in etibarlı işləməsi üçün girişdə parametrlərin validasiyası zəruridir. Tələb olunan parametr yoxdursa və ya yanlış tipdədirsə, problemin təsviri ilə UI.user_error! istifadə edin. Fastlane hər bir parametr üçün tip (String, Boolean, Integer, Array), standart dəyər və təsvir təyin etməyə imkan verən options metodunu təqdim edir — validasiya lane işə salındıqda avtomatik yerinə yetirilir.

Əlavə olaraq, mətn parametrləri üçün verify bloku vasitəsilə yoxlamalardan istifadə edilə bilər: verify do |value| value.length > 0 end. Yanlış formatda Fastlane gözlənilən formatı və ötürülən dəyəri göstərən oxunaqlı mesaj çıxarır ki, bu da CI/CD mühitində debug prosesini asanlaşdırır.

Lanes-lərin birləşdirilməsi: before_all, after_all və xəta idarəetməsi

Fastlane hər lane-dən əvvəl və sonra kodu icra etmək üçün həyat dövrü hook-ları təqdim edir. before_all bloku müəyyən platformada və ya qlobal olaraq hər lane-dən əvvəl icra olunur. after_all bloku lane uğurla başa çatdıqdan sonra icra olunur. error bloku lane daxilində hər hansı xəta zamanı icra olunur.

Hook-lar təkrarlanan məntiqi mərkəzləşdirməyə imkan verir: before_all-də asılılıqların quraşdırılması, after_all-də bildirişlərin göndərilməsi, error blokunda müvəqqəti faylların təmizlənməsi və xəta barədə xəbərdarlıq. Bu, kod təkrarlanmasını azaldır və lanes-ləri daha təmiz edir.

ruby
# Lanes həyat dövrü hookları
default_platform(:ios)

before_all do
  cocoapods(try_repo_update_on_error: true)
  ensure_git_status_clean
end

after_all do |lane|
  slack(message: "Lane #{lane} uğurla tamamlandı")
end

error do |lane, exception|
  slack(
    message: "Lane #{lane} xəta ilə uğursuz oldu: #{exception}",
    success: false
  )
end

lane :deploy do
  match(type: 'appstore')
  gym(export_method: 'app-store')
  deliver
end

Error bloku iki arqument qəbul edir: lane adı (symbol) və istisna obyekti. Blok daxilində Slack-ə bildiriş göndərə, fayla log yaza və ya alternativ bərpa ssenarisi işə sala bilərsiniz. Error bloku uğurla başa çatarsa, Fastlane qurmanı CI/CD səviyyəsində uğursuz hesab etmir.

Private lanes və təkrar istifadə

Private lane — lane əvəzinə private_lane vasitəsilə bəyan edilmiş, mövcud əmrlər siyahısında göstərilməyən və birbaşa terminaldan işə salına bilməyən lane-dir. Private lanes bir neçə public lanes-dən çağırılan təkrarlanan addımları inkapsulyasiya etmək üçün nəzərdə tutulub.

Private lanes xüsusilə ciddi müəyyən edilmiş ardıcıllıqla yerinə yetirilməli olan mürəkkəb ardıcıllıqlar üçün faydalıdır. Məsələn, private lane :setup_signing :build_dev, :build_staging və :build_production lanes-lərindən müxtəlif parametrlərlə çağırıla bilər, lakin özlüyündə ayrıca əmr kimi məna kəsb etmir.

ruby
# Təkrar istifadə üçün Private lanes
private_lane :setup_environment do |options|
  cocoapods(try_repo_update_on_error: true)
  match(type: options[:type], readonly: true)
  increment_build_number
end

lane :dev_build do
  setup_environment(type: 'development')
  gym(export_method: 'development')
end

lane :appstore_build do
  setup_environment(type: 'appstore')
  gym(export_method: 'app-store')
  deliver
end

Private lanes digər private lanes-ləri çağıraraq abstraksiya iyerarxiyası yarada bilər. Fastfile-in oxunaqlılığını qorumaq üçün iç-içəlik dərinliyini 2–3 səviyyə ilə məhdudlaşdırmaq tövsiyə olunur. Hər private lane-i təyinatını və gözlənilən parametrlərini təsvir edən şərhlə sənədləşdirin.

iOS və Android üçün lanes nümunələri

iOS və Android layihələri üçün praktik nümunələri nəzərdən keçirək. iOS lanes adətən testlər üçün scan, sertifikatlar üçün match, qurma üçün gym və çatdırılma üçün pilot və ya deliver istifadə edir. Android lanes qurma üçün gradle, nəşr üçün supply və bulud testi üçün firebase_test_lab istifadə edir.

ruby
// iOS tətbiqi üçün tam CI/CD Lane
lane :ci_full_ios do
  scan(scheme: 'App', code_coverage: true)
  gym(scheme: 'App', export_method: 'app-store')
  pilot(distribute_external: true)
  slack(message: 'iOS CI/CD uğurla başa çatdı')
end

/* Android tətbiqi üçün tam CI/CD Lane */
lane :ci_full_android do
  gradle(task: 'testReleaseUnitTest')
  gradle(task: 'bundleRelease')
  supply(track: 'internal')
end

iOS və Android üçün lanes-ləri birləşdirərək çarpaz platformalı tətbiq üçün vahid CI/CD prosesi yarada bilərsiniz. Platforma-spesifik lanes-ləri qruplaşdırmaq üçün platform :ios və platform :android platforma bloklarından istifadə edin və onları icra sırasını idarə edən ümumi orchestrator lane-dən çağırın.

Lanes yazmağın ən yaxşı təcrübələri

Lanes yazarkən ssenarilərin oxunaqlılığını, davamlılığını və etibarlılığını təmin edən bir sıra təcrübələrə riayət etmək tövsiyə olunur. Birinci qayda — hər lane bir tapşırığı yerinə yetirməlidir. Lane çox şey edirsə, onu bir neçə lane və private lanes-ə bölün.

İkinci qayda — lanes-in adlandırılması fel və ya fel ifadəsi olmalıdır: build, deploy, test, upload_screenshots. process və ya do_all kimi abstrakt adlardan çəkinin. Lane adında sözləri ayırmaq üçün alt xətlərdən istifadə edin.

Üçüncü qayda — xətaları açıq şəkildə idarə edin. Problemlər haqqında aydın mesajlar üçün UI.user_error! istifadə edin. Fastlane-in standart xəta mesajlarına etibar etməyin — tərtibatçıya kontekst verin: “GoogleService-Info.plist faylı tapılmadı — onu layihəyə əlavə edin” “File not found” əvəzinə.

TəcrübəTəsvirNümunə
Bir tapşırıqLane bir məntiqi əməliyyat yerinə yetirirlane :run_tests, lane :build_ipa
ParametrlərBütün parametrlər options və ya ENV vasitəsiləoptions[:scheme] || default
Hook-larbefore_all/after_all ümumi kod üçünbefore_all-də cocoapods
ŞərhlərMürəkkəb hissələri sənədləşdirin# Bitcode ilə qurma
XətalarAnlaşılan xəta mesajlarıUI.user_error!("...")

Dördüncü qayda — lanes-ləri CI/CD-də işə salmazdan əvvəl lokal olaraq test edin. Fastlane --dry-run flagı vasitəsilə dry-run rejimini dəstəkləyir, hansı ki, actions-lərin faktiki icra olunmadan hansıların yerinə yetiriləcəyini göstərir. İnteqrasiyadan əvvəl ayrı-ayrı lanes-ləri izolə edilmiş şəkildə test etmək üçün fastlane run_test istifadə edin.

Lanes-in sənədləşdirilməsi

Hər lane-in sənədləşdirilməsi komanda işi üçün vacib təcrübədir. Fastlane lane bəyan etməzdən əvvəl yerləşdirilən desc blokundan avtomatik sənəd generasiyasını dəstəkləyir. Desc mətni fastlane lanes və fastlane list işə salındıqda göstərilir, tərtibatçılara Fastfile mənbə kodunu oxumadan hər ssenarinin təyinatını anlamağa kömək edir.

Parametrləri sənədləşdirmək üçün gözlənilən dəyərlərin təsviri ilə Ruby şərhlərindən istifadə edin. Fastlane fastlane generate_docs əmri ilə lanes-lərin tam siyahısı və təsviri ilə README.md faylı yarada bilər ki, bu da yeni komanda üzvlərinin layihənin CI/CD proseslərinə adaptasiyası üçün əlverişlidir.

Tez-tez verilən suallar

Fastlane-də Lane nədir?

Lane — Fastlane-də Ruby-də Fastfile-də bəyan edilən adlandırılmış avtomatlaşdırma ssenarisidir. Lane konkret tapşırığı yerinə yetirmək üçün actions ardıcıllığını birləşdirir: tətbiqin qurulması, testlərin işə salınması və ya yerləşdirilməsi. Terminaldan və ya CI/CD sistemindən fastlane [lane_adı] vasitəsilə işə salınır.

Fastfile-də Lane necə yaradılır?

Fastfile-də lane :name do ... end konstruksiyasından istifadə edin. Blok daxilində parametrlərlə actions çağırışlarını əlavə edin. Lane digər lanes-ləri adla çağıra bilər. İşə salmaq üçün Fastfile olan fastlane kataloqunun yerləşdiyi layihənin kökündə terminalda fastlane name icra edin.

Lane-ə parametrləri necə ötürmək olar?

Parametrlər əmr sətri vasitəsilə ötürülür: fastlane build scheme:App version:2.0. Lane daxilində parametrlər options[:scheme] və options[:version] vasitəsilə əlçatandır. Məcburi parametrlər üçün lane-in əvvəlində dəyərin mövcudluğunu yoxlayın, istəyə bağlı olanlar üçün standart dəyərlər təyin edin.

Fastlane-də private lane nədir?

Private lane — lane əvəzinə private_lane vasitəsilə bəyan edilmiş lane. Birbaşa əmr sətrindən işə salına bilməz və digər lanes-lərdən çağırılan təkrarlanan addımları inkapsulyasiya etmək üçün xidmət edir. Bu, kod təkrarlanmasını azaldır və Fastfile-in saxlanmasını asanlaşdırır.

Lane-də xətaları necə idarə etmək olar?

İstisnaları tutmaq üçün qlobal olaraq və ya konkret lane daxilində error blokundan istifadə edin. Fastlane bloka lane adını və exception obyektini ötürür. Blok daxilində bildiriş göndərə, log yaza və ya təmizləmə icra edə bilərsiniz. Anlaşılan xəta mesajları yaratmaq üçün UI.user_error! istifadə edin.

Nəticə

  • Lane — Ruby-də Fastlane-də CI/CD tapşırıqları üçün actions-ləri birləşdirən adlandırılmış avtomatlaşdırma ssenarisi
  • Syntax — lane :name do ... end options hash və mühit dəyişənləri vasitəsilə parametr dəstəyi ilə
  • Hook-lar — lanes-in həyat dövrünün mərkəzləşdirilmiş idarəsi üçün before_all, after_all və error blokları
  • Private lane — birbaşa işə salmadan təkrarlanan məntiqin inkapsulyasiyası üçün qapalı ssenari
  • iOS lanes test, qurma və çatdırılma üçün scan, gym, match, pilot istifadə edir
  • Android lanes Gradle vasitəsilə qurma və Google Play-də nəşr üçün gradle və supply istifadə edir
  • Ən yaxşı təcrübələr: bir lane — bir tapşırıq, aşkar parametrlər, aydın xətalar, dry-run vasitəsilə test

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.

Layihəni müzakirə et

Həm də oxuyun