Fastlane, iOS ve Android için mobil uygulamaların derlenmesini ve yayınlanmasını otomatikleştiren bir araçtır. Fastlane, kod imzalama, derleme, test çalıştırma, ekran görüntüsü oluşturma ve App Store Connect ile Google Play Console'a yükleme işlemlerini yönetir. Mobil geliştirmede CI/CD için fiili standarttır.
Ana çıkarımlar
Fastlane, mobil geliştirmenin rutin görevlerini otomatikleştiren açık kaynaklı bir araçtır: uygulamayı derleme, testleri çalıştırma, ekran görüntüleri oluşturma, sertifikaları yönetme ve TestFlight, App Store ile Google Play'e derleme yükleme. Fastlane Ruby ile yazılmıştır ve gem install fastlane komutuyla RubyGems üzerinden dağıtılır.
Fastlane, 2015 yılında bir iOS aracı olarak ortaya çıktı ancak hızla Android'e genişledi. Bugün, aksiyonlar adı verilen düzinelerce yerleşik komuttan oluşan bir ekosistemdir ve bunlar lanes adı verilen senaryolarda birleştirilebilir. Her lane belirli bir görevi yerine getirir: örneğin, build_release sürüm sürümünü derler ve deploy_beta derlemeyi TestFlight'a yükler.
Fastlane, Uber, Airbnb, Snapchat, Twitter ve Shopify gibi şirketler tarafından kullanılmaktadır. 2024 anketine göre, iOS geliştiricilerinin %60'ından fazlası projelerinde Fastlane kullanmaktadır. Araç, hem yerel çalıştırmayı hem de bulut CI sistemleriyle entegrasyonu destekleyerek mobil CI/CD için fiili standart haline gelmiştir.
# Fastlane kurulumu
sudo gem install fastlane -NV
# Projede başlatma
fastlane init
Başlatma sonrasında Fastlane, üç dosyayla birlikte bir fastlane/ dizini oluşturur: Fastfile (senaryolar), Appfile (uygulama ayarları) ve Matchfile (sertifika ayarları). Bu yapı her iki platformda da — iOS ve Android — aynı kalır.
Fastlane'in ana yapılandırma dosyası Fastfile'dır. Proje kökündeki fastlane/ dizininde bulunur. Fastfile Ruby ile yazılır: her lane, bir dizi aksiyon içeren adlandırılmış bir bloktur. Bir lane parametre alabilir, diğer lane'leri çağırabilir ve değer döndürebilir.
# fastlane/Fastfile — iOS örneği
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
Her lane, fastlane ios beta veya fastlane ios release komutuyla çalıştırılır. Fastfile, değişkenleri, koşulları, döngüleri ve harici betik çağrılarını destekler — tam teşekküllü bir Ruby dosyasıdır. Geliştiriciler, private_lane (yerel yöntemler) ve diğer Fastfile'lardan import yoluyla kodu yeniden kullanabilir.
Fastlane, çoğu görev için 200'den fazla yerleşik aksiyon sağlar. Gerekli aksiyon yoksa, Ruby'de kendi aksiyonunuzu yazabilir veya sh("...") ile bir shell komutu çağırabilirsiniz. Aksiyonlar parametre alabilir — derleme ayarları, yollar, erişim token'ları — ve sonraki adımlarda kullanılmak üzere sonuç döndürebilir.
iOS için Fastlane üç temel sorunu çözer: sertifika ve provisioning profile yönetimi, Xcode üzerinden IPA derleme ve App Store Connect ile TestFlight'a yayınlama. Bu görevlerin her biri ayrı bir aksiyon tarafından karşılanır.
match, sertifika yönetimi için bir aksiyondur. Tüm sertifikaları ve provisioning profillerini şifrelenmiş bir Git deposunda saklar. Her geliştirici ve CI sunucusu aynı dosya kümesini kullanır, bu da çakışmaları ve süresi dolmuş sertifika sorunlarını ortadan kaldırır. Match, yeni cihazlar eklendiğinde profilleri otomatik olarak günceller.
sigh, Apple Developer Portal üzerinden bir provisioning profile oluşturur ve indirir. Belirli bir tür için (development, ad-hoc veya appstore) hızlıca bir profil gerektiğinde kullanılır.
gym, IPA'yı derler. Gym, xcodebuild'i optimum parametrelerle sarar, şemayı, yapılandırmayı, dışa aktarma seçeneklerini otomatik olarak seçer ve imzalı bir IPA oluşturur. Örnek: gym(scheme: "MyApp", export_method: "app-store").
pilot, TestFlight'ı yönetir. Derlemeyi yükler, testçiler ekler ve inceleme durumunu takip eder. deliver, meta veriler, ekran görüntüleri, fiyatlandırma ve sürümleme dahil olmak üzere tam App Store yayınlamasını halleder.
# iOS uygulaması derleme ve yayınlama
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 ile çalışmak için erişim token'ları gerekir. Fastlane iki kimlik doğrulama yöntemini destekler: App Store Connect API Anahtarı (önerilen) ve iki faktörlü kimlik doğrulamalı Apple ID. API anahtarları, etkileşimli şifre girişi gerektirmediği için CI/CD için daha uygundur.
| aksiyon | Amaç | Manuel karşılık |
|---|---|---|
match | Sertifika ve profil yönetimi | Apple Developer Portal |
sigh | Provisioning profile oluşturma | Xcode + Developer Portal |
gym | IPA derleme | xcodebuild + xcrun |
pilot | TestFlight yükleme | Xcode Organizer |
deliver | App Store yayınlama | App Store Connect Web |
scan | UI test çalıştırma | xcodebuild test |
Android'de Fastlane, Gradle ile derleme, APK ve AAB imzalama, Google Play Console'a yükleme ve Firebase App Distribution'ı otomatikleştirir.
gradle, Android derlemeleri için ana aksiyondur. Gerekli görevlerle Gradle wrapper'ını çağırır: gradle(task: "assembleRelease") veya AAB için gradle(task: "bundleRelease"). Bayraklar, ortam değişkenleri ve gradle.properties yolunu iletebilirsiniz.
supply, APK veya AAB'yi Google Play Console'a yükler. Supply, sürümleri, track'leri (internal, alpha, beta, production), sürüm notlarını, fiyatlandırmayı ve ülke dağıtımını yönetir. Örnek: supply(track: "beta", release_status: "completed").
screengrab, Google Play için ekran görüntüleri oluşturur. Farklı cihazlarda ve dillerde uygulamanın ekran görüntülerini yakalayan enstrümantasyon testlerini çalıştırır. Sonuçtaki ekran görüntüleri supply aracılığıyla yüklenir.
# Android uygulaması derleme ve yayınlama
lane :deploy_android do
gradle(task: "clean bundleRelease")
supply(
track: "beta",
release_status: "completed",
version_code: 42
)
end
| aksiyon | Amaç | Manuel karşılık |
|---|---|---|
gradle | Gradle ile derleme | ./gradlew assembleRelease |
supply | Google Play'e yükleme | Google Play Console Web |
screengrab | Ekran görüntüsü oluşturma | Manuel ekran görüntüsü + ImageMagick |
firebase_app_distribution | Firebase dağıtımı | Firebase Console Upload |
Fastlane, CI/CD pipeline'larında çalışmak üzere tasarlanmıştır. Etkileşimsiz modu, ortam değişkenlerini ve derleme yapıtlarını doğru şekilde işler. Aşağıda popüler CI sistemleriyle entegrasyon örnekleri verilmiştir.
GitHub Actions'ta Fastlane, bir Ruby betiği olarak çalıştırılır. Tipik bir iş akışı: Ruby ve Fastlane'i kurun, anahtarları yapılandırın (secrets aracılığıyla sertifikalar, API token'ları) ve lane'i çalıştırın. iOS bir macOS runner gerektirir; Android ubuntu-latest üzerinde çalışır.
GitLab CI'da Fastlane, .gitlab-ci.yml içinde benzer bir kurulumla kullanılır: bağımlılıkları kurun, fastlane'i çalıştırın ve yapıtları iletin. GitLab CI, macOS ve Linux runner'larını destekler.
Bitrise — mobil uygulamalar için özelleşmiş bir CI/CD — yerleşik Fastlane desteğine sahiptir. Bitrise Workflow, Fastlane Step'i çağırabilir veya fastlane ile özel betikler çalıştırabilir. Bitrise, sertifikaları Kod İmzalama yöneticisi aracılığıyla yönetir.
# Koşullu test çalıştırma ile CI/CD için 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 entegrasyonunun önemli bir yönü sırların saklanmasıdır. Fastlane, dotenv aracılığıyla .env dosyasını ve ortam değişkenlerini kullanır. iOS için kritik değişkenler: MATCH_PASSWORD, FASTLANE_APPLE_API_KEY, FASTLANE_APPLE_API_KEY_ID. Android için: SUPPLY_JSON_KEY_DATA — Google Play hizmet hesabının içeriği.
Fastlane, 200'den fazla yerleşik aksiyon içerir. Aşağıda, platformları ve açıklamalarıyla birlikte en popüler olanların bir özeti bulunmaktadır.
| aksiyon | Platform | Açıklama |
|---|---|---|
gym | iOS | Optimize edilmiş xcodebuild parametreleriyle IPA derleme |
match | iOS | Sertifikaları ve provisioning profillerini Git ile senkronize etme |
pilot | iOS | Derlemeyi TestFlight'a yükleme ve testçileri yönetme |
deliver | iOS | Meta verilerle uygulamayı App Store'da yayınlama |
scan | iOS | Rapor oluşturma ile birim ve UI testlerini çalıştırma |
gradle | Android | Gradle görevlerini çalıştırma: assemble, bundle, test |
supply | Android | APK ve AAB'yi Google Play Console'a yükleme |
screengrab | Android | Google Play için otomatik ekran görüntüleri |
firebase_app_distribution | Android | Firebase aracılığıyla derleme dağıtma |
snapshot | iOS | App Store için simülatörlerde otomatik ekran görüntüleri |
increment_build_number | iOS | Xcode projesinde derleme numarasını otomatik artırma |
appcenter_upload | Her ikisi | Derlemeyi App Center'a yükleme |
Gerekli aksiyonu bulmak için fastlane action [ad] komutunu kullanın; bu komut belgeleri, parametreleri ve örnekleri görüntüler. Tam liste yerel olarak mevcuttur: fastlane actions.
Fastlane ayrıca eklentileri de destekler — yeni aksiyonlar ekleyen topluluk uzantıları. Eklentiler fastlane add_plugin [ad] ile kurulur ve RubyGems kayıtlarında bulunur. Popüler eklenti örnekleri: fastlane-plugin-versioning (sürüm yönetimi), fastlane-plugin-sentry (hata ayıklama sembollerini Sentry'ye yükleme), fastlane-plugin-teams (Microsoft Teams'de bildirimler).
Sıkça Sorulan Sorular
Fastlane, mobil uygulamaların derlenmesini ve yayınlanmasını otomatikleştiren bir araçtır. Manuel işlemleri — derleme, kod imzalama, mağazalara yükleme — tek bir komutla değiştirir. Fastlane, yayınlama süresini saatlerden dakikalara indirir ve yayınlama sırasında insan hatalarını ortadan kaldırır.
Evet. Fastlane her iki platformu da bağımsız olarak destekler. iOS macOS gerektirirken, Android yalnızca Linux gerektirir. Tek bir Fastfile'da platforma göre lane'leri ayırabilirsiniz: platform :ios do ... end ve platform :android do ... end.
match aksiyonu aracılığıyla. Şifrelenmiş sertifikaları ve provisioning profillerini bir Git deposunda saklar. Her geliştirici depoyu klonlar, match MATCH_PASSWORD değişkeninin şifresini kullanarak dosyaların şifresini çözer ve bunları anahtarlığa yükler. Bu, "benim makinemde çalışıyor" sorununu çözer.
Evet. Fastlane'de APK ve IPA'yı Firebase App Distribution'a yüklemek için yerleşik firebase_app_distribution aksiyonu bulunur. Testçi eklemek için firebase_app_distribution_add_testers da mevcuttur. Bir alternatif, App Center için appcenter_upload aksiyonudur.
Fastlane, RubyGems aracılığıyla kurulur: gem install fastlane -NV. iOS, macOS ve Xcode gerektirir; Android, Linux veya macOS ile JDK ve Android SDK gerektirir. GitHub Actions'da Ruby ve Fastlane'i kurmak için hazır bir ruby/setup-ruby aksiyonu vardır. Ortam değişkenleri CI sisteminin secrets'ları aracılığıyla iletilir.
Fastlane, derleme ve yayınlama görevlerini otomatikleştirmek için bir kütüphane ve CLI'dir. Bitrise ve Jenkins tam CI/CD platformlarıdır. Fastlane onların içinde çalışır: Jenkins, Fastlane'i bir pipeline adımı olarak çalıştırır, Bitrise, Fastlane'i özel bir Step aracılığıyla çağırır. Fastlane bir CI sisteminin yerini almaz — onu mobil özel işlevsellikle tamamlar.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun