Fastlane — eszköz mobilalkalmazások build-jeinek és publikációjának automatizálására iOS és Android rendszerekhez. A Fastlane kezeli a kód aláírását, buildelést, tesztek futtatását, képernyőképek készítését és feltöltést az App Store Connect és Google Play Console rendszerbe. Ez a de facto szabvány a CI/CD számára a mobilfejlesztésben.
Főbb következtetések
A Fastlane — egy nyílt forráskódú eszköz, amely automatizálja a mobilfejlesztés rutinfeladatait: az alkalmazás buildelését, tesztek futtatását, képernyőképek készítését, tanúsítványok kezelését, build-ek feltöltését a TestFlight, App Store és Google Play rendszerbe. A Fastlane Ruby nyelven íródott, és a RubyGems-en keresztül terjeszthető a gem install fastlane paranccsal.
A Fastlane 2015-ben jelent meg iOS eszközként, de gyorsan kiterjedt Androidra. Ma ez egy ökoszisztéma, amely több tucat action-ből áll — beépített parancsokból, amelyek lanes nevű forgatókönyvekbe kombinálhatók. Minden lane egy adott feladatot hajt végre: például a build_release összeállítja a kiadási verziót, a deploy_beta pedig feltölti a buildet a TestFlight-ba.
A Fastlane-t olyan vállalatok használják, mint az Uber, Airbnb, Snapchat, Twitter és Shopify. Egy 2024-es felmérés szerint az iOS-fejlesztők több mint 60%-a használja a Fastlane-t a projektjeiben. Az eszköz támogatja a helyi futtatást és a felhőalapú CI-rendszerekkel való integrációt is, ami a mobil CI/CD de facto szabványává teszi.
# A Fastlane telepítése
sudo gem install fastlane -NV
# Inicializálás a projektben
fastlane init
Az inicializálás után a Fastlane létrehozza a fastlane/ könyvtárat három fájllal: Fastfile (forgatókönyvek), Appfile (alkalmazás beállításai) és Matchfile (tanúsítvány beállításai). Ez a struktúra egységes marad mindkét platformon — iOS és Android.
A Fastlane fő konfigurációs fájlja — Fastfile. A projekt gyökerében található fastlane/ könyvtárban található. A Fastfile Ruby nyelven íródik: minden lane egy elnevezett blokk, action-ök sorozatával. A lane fogadhat paramétereket, meghívhat más lane-eket, és visszatérhet értékekkel.
# fastlane/Fastfile — példa iOS-re
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
Minden lane a fastlane ios beta vagy fastlane ios release paranccsal indítható. A Fastfile támogatja a változókat, feltételeket, ciklusokat és külső szkriptek meghívását — ez egy teljes értékű Ruby fájl. A fejlesztők újra felhasználhatják a kódot a private_lane (helyi metódusok) és más Fastfile-okból történő import segítségével.
A Fastlane több mint 200 beépített action-t kínál a legtöbb feladathoz. Ha a szükséges action nem létezik, írhat sajátot Ruby nyelven, vagy meghívhat egy shell parancsot a sh("...") segítségével. Az action-ök fogadhatnak paramétereket — build beállításokat, elérési utakat, hozzáférési tokeneket — és visszaadhatják az eredményt a következő lépésekben való felhasználáshoz.
A Fastlane iOS-re három kulcsproblémát old meg: tanúsítványok és provisioning profile-ok kezelése, IPA buildelése Xcode-on keresztül, valamint publikálás az App Store Connect és TestFlight rendszerbe. Minden feladatot külön action fed le.
match — action a tanúsítványok kezeléséhez. Az összes tanúsítványt és provisioning profile-t egy titkosított Git-tárházban tárolja. Minden fejlesztő és CI-szerver ugyanazt a fájlkészletet használja, ami kiküszöböli az ütközéseket és a lejárt tanúsítványokkal kapcsolatos problémákat. A match automatikusan frissíti a profilokat új eszközök hozzáadásakor.
sigh — provisioning profile-t hoz létre és tölt le az Apple Developer Portal-on keresztül. Akkor használatos, amikor gyorsan kell profilt szerezni egy adott típushoz: development, ad-hoc vagy appstore.
gym — IPA buildelése. A gym becsomagolja az xcodebuild-et optimális paraméterekkel, automatikusan kiválasztja a sémát, konfigurációt, export beállításokat, és létrehoz egy aláírt IPA-t. Példa: gym(scheme: "MyApp", export_method: "app-store").
pilot — TestFlight kezelése. Feltölti a buildet, tesztelőket ad hozzá, követi a felülvizsgálat állapotát. deliver — teljes publikáció az App Store-ban, beleértve a metaadatokat, képernyőképeket, árat és verziókat.
# iOS alkalmazás buildelése és publikálása
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
Az App Store Connect használatához hozzáférési tokenek szükségesek. A Fastlane két hitelesítési módot támogat: App Store Connect API Key (ajánlott) és Apple ID kétfaktoros hitelesítéssel. Az API-kulcsok kényelmesebbek a CI/CD számára, mert nem igényelnek interaktív jelszóbevitelt.
| Action | Cél | Kézi megfelelő |
|---|---|---|
match | Tanúsítványok és profilok kezelése | Apple Developer Portal |
sigh | Provisioning profile létrehozása | Xcode + Developer Portal |
gym | IPA buildelése | xcodebuild + xcrun |
pilot | Feltöltés TestFlight-ba | Xcode Organizer |
deliver | Publikáció az App Store-ban | App Store Connect Web |
scan | UI tesztek futtatása | xcodebuild test |
Androidon a Fastlane automatizálja a buildelést Gradle-en keresztül, az APK és AAB aláírását, feltöltést a Google Play Console és Firebase App Distribution rendszerbe.
gradle — a fő action Android buildeléshez. Meghívja a Gradle wrappert a szükséges feladatokkal: gradle(task: "assembleRelease") vagy AAB esetén gradle(task: "bundleRelease"). Kapcsolók, környezeti változók és a gradle.properties elérési útja átadható.
supply — APK vagy AAB feltöltése a Google Play Console-ba. A supply kezeli a verziókat, track-eket (internal, alpha, beta, production), kiadási megjegyzéseket, árat és terjesztési országot. Példa: supply(track: "beta", release_status: "completed").
screengrab — képernyőképek készítése a Google Play számára. Instrumentációs teszteket futtat, amelyek képernyőképeket készítenek az alkalmazás képernyőiről különböző eszközökön és nyelveken. A kapott képernyőképek a supply-on keresztül kerülnek feltöltésre.
# Android alkalmazás buildelése és publikálása
lane :deploy_android do
gradle(task: "clean bundleRelease")
supply(
track: "beta",
release_status: "completed",
version_code: 42
)
end
| Action | Cél | Kézi megfelelő |
|---|---|---|
gradle | Buildelés Gradle-en keresztül | ./gradlew assembleRelease |
supply | Feltöltés a Google Play-be | Google Play Console Web |
screengrab | Képernyőképek készítése | Kézi képernyőkép + ImageMagick |
firebase_app_distribution | Terjesztés Firebase-en keresztül | Firebase Console Upload |
A Fastlane CI/CD pipeline-okban való munkára tervezték. Helyesen kezeli a nem interaktív módot, a környezeti változókat és a build-összetevőket. Alább — példák népszerű CI-rendszerekkel való integrációra.
A GitHub Actions-ban a Fastlane Ruby-szkriptként fut. Tipikus munkafolyamat: Ruby és Fastlane telepítése, kulcsok beállítása (tanúsítványok, API-tokenek secrets-en keresztül), lane futtatása. Az iOS-hez macOS futtatókörnyezet szükséges; az Android ubuntu-latest-en működik.
A GitLab CI-ben a Fastlane a .gitlab-ci.yml fájlban használatos hasonló sémával: függőségek telepítése, fastlane futtatása, összetevők átadása. A GitLab CI támogatja a macOS és Linux futtatókörnyezeteket.
Bitrise — mobilalkalmazásokra specializált CI/CD — beépített támogatással rendelkezik a Fastlane számára. A Bitrise Workflow meghívhatja a Fastlane Step-et, vagy tetszőleges szkripteket futtathat fastlane-nel. A Bitrise a tanúsítványokat saját Code Signing menedzserén keresztül kezeli.
# Fastfile CI/CD-hez feltételes tesztfuttatással
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
A CI/CD-integráció fontos aspektusa — a titkok tárolása. A Fastlane a .env fájlt használja a dotenv-en és környezeti változókon keresztül. Az iOS számára kritikus változók: MATCH_PASSWORD, FASTLANE_APPLE_API_KEY, FASTLANE_APPLE_API_KEY_ID. Androidhoz: SUPPLY_JSON_KEY_DATA — a Google Play szolgáltatásfiók tartalma.
A Fastlane több mint 200 beépített action-t tartalmaz. Alább — a legnépszerűbbek áttekintése a platform és cél megjelölésével.
| Action | Platform | Leírás |
|---|---|---|
gym | iOS | IPA buildelése optimalizált xcodebuild paraméterekkel |
match | iOS | Tanúsítványok és provisioning profile-ok szinkronizálása Git-en keresztül |
pilot | iOS | Build feltöltése TestFlight-ba és tesztelők kezelése |
deliver | iOS | Alkalmazás publikálása az App Store-ban metaadatokkal |
scan | iOS | Unit és UI tesztek futtatása jelentéskészítéssel |
gradle | Android | Gradle-feladatok futtatása: assemble, bundle, test |
supply | Android | APK és AAB feltöltése a Google Play Console-ba |
screengrab | Android | Automatikus képernyőképek a Google Play számára |
firebase_app_distribution | Android | Build-ek terjesztése Firebase-en keresztül |
snapshot | iOS | Automatikus képernyőképek szimulátorokon az App Store-hoz |
increment_build_number | iOS | Build szám automatikus növelése az Xcode projektben |
appcenter_upload | Mindkettő | Build feltöltése az App Center-be |
A szükséges action kereséséhez a fastlane action [név] parancs használható, amely megjeleníti a dokumentációt, paramétereket és példákat. A teljes lista helyben elérhető: fastlane actions.
A Fastlane támogatja a plugin-eket is — közösségi bővítményeket, amelyek új action-öket adnak hozzá. A plugin-ek a fastlane add_plugin [név] paranccsal telepíthetők, és a RubyGems nyilvántartásban érhetők el. Példák népszerű plugin-ekre: fastlane-plugin-versioning (verziókezelés), fastlane-plugin-sentry (debug szimbólumok feltöltése a Sentry-be), fastlane-plugin-teams (értesítések a Microsoft Teams-ben).
Frequently Asked Questions
Fastlane — eszköz mobilalkalmazások build-jeinek és publikációjának automatizálására. Arra szolgál, hogy a kézi műveleteket — buildelés, aláírás, boltokba feltöltés — egy paranccsal helyettesítse. A Fastlane órákról percekre csökkenti a kiadási időt, és kiküszöböli az emberi hibákat a publikáció során.
Igen. A Fastlane mindkét platformot függetlenül támogatja. Az iOS-hez macOS szükséges, az Androidhoz elegendő a Linux. Egy Fastfile-ban a lane-ek platform szerint szétválaszthatók: platform :ios do ... end és platform :android do ... end.
A match action segítségével. Titkosított tanúsítványokat és provisioning profile-okat tárol egy Git-tárházban. Minden fejlesztő klónozza a tárházat, a match visszafejti a fájlokat a MATCH_PASSWORD változóból származó jelszóval, és telepíti őket a kulcstartóba. Ez megoldja a "az én gépemen buildelődik" problémát.
Igen. A Fastlane rendelkezik beépített firebase_app_distribution action-nel az APK és IPA Firebase App Distribution-be történő feltöltéséhez. Elérhető a firebase_app_distribution_add_testers is a tesztelők hozzáadásához. Alternatíva — az appcenter_upload action az App Center számára.
A Fastlane a RubyGems-en keresztül telepíthető: gem install fastlane -NV. Az iOS-hez Xcode-dal ellátott macOS szükséges; az Androidhoz — Linux vagy macOS JDK-vel és Android SDK-val. A GitHub Actions-ban van egy kész ruby/setup-ruby action a Ruby és a Fastlane telepítéséhez. A környezeti változók a CI-rendszer secrets rendszerén keresztül adhatók át.
Fastlane — egy könyvtár és CLI a build és publikációs feladatok automatizálásához. Bitrise és Jenkins — teljes CI/CD platformok. A Fastlane ezeken belül működik: a Jenkins a Fastlane-t pipeline-lépésként futtatja, a Bitrise a Fastlane-t egy speciális Step-en keresztül hívja meg. A Fastlane nem helyettesíti a CI-rendszert, hanem kiegészíti azt mobil-specifikus funkciókkal.
Summary
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is