Fastlane, iOS ve Android uygulamalarının derleme, test ve yayınlama süreçlerini otomatikleştirmek için açık kaynaklı bir araçtır. İmzalama, derleme ve mağazaya yükleme için bir düzine komutu manuel olarak çalıştırmak yerine, geliştirici tüm süreci Fastfile'da tanımlar ve tek bir komutla çalıştırır. Fastlane Docs, 2025'ye göre, araç dünya çapında 1,5 milyondan fazla projede kullanılmaktadır. Fastlane, App Store Connect, Google Play Console ve kod imzalama sistemleriyle çalışmak için yardımcı programları bir araya getirir.
Önemli noktalar
Fastlane, Ruby ile yazılmış ve MIT lisansı altında dağıtılan bir mobil derleme otomasyon aracıdır. Mobil geliştiricinin rutin görevlerini otomatikleştirir: uygulama derleme, test çalıştırma, ekran görüntüsü oluşturma, kod imzalama ve ikili dosyaları App Store veya Google Play'e yükleme. 15–20 manuel komut yerine, geliştirici senaryo adıyla tek bir fastlane komutu çalıştırır.
Fastlane, Xcode yardımcı programları (xcodebuild, xcrun) ve Android SDK (gradlew, apksigner, bundletool) üzerinde bir sarmalayıcı olarak çalışır ve her iki platform için birleşik bir arayüz sağlar. Bu, aynı uygulamanın iOS ve Android sürümlerini yöneten ekipler için özellikle değerlidir — aynı Fastfile'lar, parametrelerde minimum farklılıkla her iki platform için derlemeleri tanımlayabilir.
GitHub'a göre, Fastlane 39.000'den fazla yıldıza sahiptir ve mobil geliştirmede otomasyon standardıdır. Araç, topluluk ve Google tarafından desteklenmektedir — Fastlane, Android uygulamalarını Google Play Console'a dağıtmak için önerilen yöntem olarak Firebase'e entegre edilmiştir.
Fastlane mimarisi üç düzey üzerine kurulmuştur: actions (temel komutlar), lanes (senaryolar) ve araçlar (özelleşmiş yardımcı programlar). Actions, Fastlane'in her biri belirli bir eylemi gerçekleştiren bireysel işlevleridir: ekran görüntüsü oluşturma, IPA derleme, TestFlight'a yükleme. Lanes, Fastfile'da tanımlanan sıralı bir senaryoda birden çok action'ı birleştirir.
Actions, Fastlane'in yapı taşlarıdır. Her action parametre alır ve tek bir görevi yerine getirir. Örneğin, gym action'ı iOS uygulamasını derler, scan testleri çalıştırır, pilot derlemeyi TestFlight'a yükler. Fastlane'de 200'den fazla yerleşik action bulunur ve her birinin dokümantasyonuna fastlane action [ad] komutuyla erişilebilir.
Yerleşik actions yeterli değilse, geliştirici Ruby ile custom action oluşturabilir ve Fastfile'a ekleyebilir. Custom action'lar, Rubygems'de yayınlanan ve proje kökündeki FastfilePlugin dosyası aracılığıyla yüklenen Fastlane eklentileri aracılığıyla dağıtılır.
Lane, birden çok action'ı mantıksal bir sırayla birleştiren adlandırılmış bir otomasyon senaryosudur. Lane, diğer lane'leri (private lanes) çağırabilir, parametre iletebilir ve hataları işleyebilir. Bu, senaryo hiyerarşisi oluşturmayı sağlar: temel derleme lane'i, dağıtım lane'i, tam CI/CD döngüsü lane'i.
Fastlane, her biri mobil otomasyonun belirli bir görevini çözen bir dizi özelleşmiş araç içerir. Araçlar, lane'ler içinde action olarak veya doğrudan komut satırından çalıştırılır. iOS ve Android için temel CI/CD ihtiyaçlarını karşılayan dört temel aracı inceleyelim.
| Araç | Amaç | Komut |
|---|---|---|
| scan | iOS simülatöründe Unit ve UI testlerini çalıştırma | fastlane scan |
| gym | iOS için IPA veya APP dosyası derleme | fastlane gym |
| match | Sertifikaların ve provisioning profile'ların Git üzerinden senkronizasyonu | fastlane match |
| deliver | App Store Connect'e ikili dosya ve meta veri yükleme | fastlane deliver |
| snapshot | Farklı cihazlarda otomatik ekran görüntüsü oluşturma | fastlane snapshot |
Scan, Xcode testlerinin çalıştırılmasını basitleştirir, uygun simülatörü otomatik olarak seçer ve raporu biçimlendirir. Gym, uygulamayı optimum derleme bayraklarıyla derler ve farklı derleme türleri (development, adhoc, appstore) için exportOptions.plist'i destekler. Deliver, yalnızca ikili dosyayı değil, aynı zamanda ekran görüntülerini, açıklamayı, sürümleri ve fiyatları tek bir meta veri dosyası aracılığıyla yüklemeye olanak tanır.
Match aracı özel ilgiyi hak ediyor — ekipte iOS sertifikalarının depolanması ve senkronizasyonu sorununu çözer. Match, sertifikaları ve provisioning profile'ları şifreleyerek bir Git deposunda saklar ve geliştiriciler fastlane match çalıştırdıklarında bunları otomatik olarak alır. Bu, her iş istasyonunun manuel yapılandırmasını ortadan kaldırır.
Snapshot, farklı cihazlarda ve dillerde mobil uygulama ekran görüntülerini otomatik olarak oluşturmak için bir araçtır. Snapshot, iOS simülatörlerinde UI testleri çalıştırır ve testin her adımında ekran görüntüsü alır. Sonuçlar fastlane/screenshots dizinine kaydedilir ve deliver aracılığıyla App Store Connect'e yüklenebilir.
Android için screengrab, Android emülatörlerinde benzer bir işlev görür. Her iki araç da yerelleştirmeyi destekler — her dil için ekran görüntüleri oluşturulur, bu da çok dilli uygulama mağazalarında yayınlama için materyal hazırlığını basitleştirir.
iOS projeleri için Fastlane, Gemfile (fastlane gem'inin yüklenmesi) ve fastlane dizinindeki Fastfile aracılığıyla yapılandırılır. İlk yapılandırma, temel dizin yapısını oluşturan, App Store Connect verilerini isteyen ve ana lane'leri içeren bir Fastline şablonu üreten fastlane init komutuyla yapılır.
iOS için ana komut, sertifikaları ve provisioning profile'ları almak için önce çalıştırılması gereken fastlane match'tir. Başarılı imzalamadan sonra Fastlane, uygulamayı derleyebilir (gym), testleri çalıştırabilir (scan) ve ikili dosyayı yükleyebilir (pilot veya deliver).
# iOS uygulaması için Fastfile
default_platform(:ios)
lane :build do
cocoapods
scan(scheme: 'App', devices: ['iPhone 15'])
gym(scheme: 'App', export_method: 'app-store')
end
lane :deploy do
match(type: 'appstore')
build
pilot(skip_waiting_for_build_processing: true)
slack(message: 'Yeni sürüm TestFlight'a yüklendi')
end
TestFlight ile çalışmak için pilot action'ını kullanın — IPA'yı yükler ve testçileri yönetir. Fastlane, upload_to_testflight'ı (pilot'un eşanlamlısı) destekler ve Apple'ın derlemeyi işlemesini bekleme süresini (5 ila 30 dakika) otomatik olarak yönetir.
Android projeleri için Fastlane benzer şekilde yapılandırılır, ancak Xcode araçları yerine Gradle ve Android SDK kullanılır. Android için Fastlane, APK ve AAB derlemesini, apksigner veya jarsigner aracılığıyla imzalamayı, enstrümantasyon testlerini çalıştırmayı ve Supply action'ı aracılığıyla Google Play Console'a yüklemeyi destekler.
Temel fark, Android derlemesinin match aracılığıyla sertifika yönetimi gerektirmemesidir (Android imzalaması ayrı olarak saklanan Keystore üzerinden yönetilir). Android için Fastlane, herhangi bir Gradle görevini çalıştırmak için gradle action'ını ve Google Play ile çalışmak için supply action'ını kullanır.
# Android uygulaması için Fastfile
default_platform(:android)
lane :build do
gradle(task: 'clean assembleRelease')
gradle(task: 'testReleaseUnitTest')
end
lane :deploy do
build
supply(
track: 'internal',
aab: 'app/build/outputs/bundle/release/app-release.aab'
)
end
Google Play Console ile çalışmak için Google Play API'sine erişimi olan bir Google Cloud hizmet hesabı gerekir. Fastlane, hizmet hesabının JSON anahtarını SUPPLY_JSON_KEY ortam değişkeni veya supply action'ındaki json_key parametresi aracılığıyla kabul eder. Yayın track'i internal, alpha, beta veya production olabilir.
Fastlane, Ruby betiklerini çalıştırabilen herhangi bir CI/CD sistemiyle entegre olabilir: Jenkins, Travis CI, GitHub Actions, GitLab CI, Bitrise ve CircleCI. Entegrasyon, fastlane gem'inin yüklenmesi ve pipeline'ın script aşamasında fastlane [lane_name] komutunun çalıştırılmasından ibarettir.
CI/CD için hassas verileri depolamak üzere ortam değişkenlerinin yapılandırılması önemlidir: MATCH_PASSWORD (sertifika şifreleme şifresi), FASTLANE_USER (Apple ID), FASTLANE_PASSWORD (Apple ID şifresi). Travis CI'da değişkenler travis encrypt ile şifrelenir; GitHub Actions'ta depo Secrets'ı aracılığıyla yönetilir.
Önerilen uygulama, sertifika deposunda yanlışlıkla değişiklik yapılmasını önlemek için CI/CD'de fastlane match'i readonly bayrağıyla kullanmaktır. Android için, Base64 kodlu ve bir ortam değişkeninde saklanan, before_install aşamasında çözülen ve geçici bir dosyaya kaydedilen Keystore'u kullanın.
Fastlane Match, iOS sertifikalarını ve provisioning profile'larını yönetmeyi otomatikleştiren bir araçtır — ekipler için Fastlane'in en değerli özelliklerinden biridir. Match, tüm sertifikaları ve profilleri depolayan şifrelenmiş bir Git deposu oluşturur (veya mevcut olanı kullanır) ve bunları geliştiriciler ile CI/CD sunucuları arasında senkronize eder.
Match, beş profil türünü destekler: development, adhoc, appstore, enterprise ve developer_id. Her tür, depo içinde ayrı bir dizinde saklanır. fastlane match development komutu, geliştirme sertifikalarını yerel makineye yüklerken, fastlane match appstore CI derlemeleri için App Store profillerini yükler.
# Fastfile'da Match Kullanımı
lane :setup_signing do
match(
type: 'appstore',
readonly: true,
git_branch: 'main'
)
end
lane :update_profiles do
match(
type: 'development',
force: true,
app_identifier: ['com.example.app', 'com.example.app.watchkitapp']
)
end
Match'in güvenliği, Git'e commit'ten önce tüm dosyaların şifrelenmesiyle sağlanır. Şifreleme şifresi MATCH_PASSWORD ortam değişkeni aracılığıyla ayarlanır ve tüm ekip üyeleri için aynı olmalıdır. Match, şifreleme için OpenSSL kullanır ve şifreyi depoda düz metin olarak saklamaz.
Sıkça sorulan sorular
Fastlane, iOS ve Android uygulamaları için bir Open Source otomasyon aracıdır. Tek bir yapılandırma dosyası Fastfile ve bir dizi yerleşik araç aracılığıyla derleme, test, kod imzalama ve App Store ile Google Play'e dağıtımı otomatikleştirir.
Temel Fastlane araçları: scan (test), gym (iOS derleme), match (sertifikalar), deliver (App Store), pilot (TestFlight), snapshot (ekran görüntüleri), supply (Google Play) ve frameit (ekran görüntüsü çerçeveleri). Her araç, bir lane içinde action olarak veya komut satırından kullanılabilir.
gem fastlane'i yükleyin, proje kökünde fastlane init komutunu çalıştırın. Derleme (gym) ve test (scan) için lane'lerle Fastfile'ı yapılandırın. Git deposu üzerinden sertifika yönetimi için Match'i yapılandırın. App Store Connect'e yükleme için pilot veya deliver ile bir dağıtım lane'i ekleyin.
Paket adını belirterek fastlane init komutunu çalıştırın. Gradle görevlerini (assembleRelease, testReleaseUnitTest) çalıştırmak için gradle action'ını kullanın. Ortam değişkenleri aracılığıyla Keystore'u yapılandırın. AAB veya APK'yı Google Play Console'da istenen track'e yüklemek için supply action'ını kullanın.
CI/CD sunucusuna gem fastlane'i yükleyin ve pipeline'ın script aşamasına fastlane [lane_name] komutunu ekleyin. FASTLANE_USER, FASTLANE_PASSWORD ve MATCH_PASSWORD ortam değişkenlerini CI/CD sırlarında yapılandırın. Sertifikalarda yanlışlıkla değişiklik yapılmasını önlemek için CI'da match readonly kullanın.
Ö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