Fastlane to narzędzie typu open source do automatyzacji budowania, testowania i publikowania aplikacji iOS i Android. Zamiast ręcznego wykonywania kilkunastu poleceń do podpisywania, budowania i przesyłania do sklepu, programista opisuje cały proces w Fastfile i uruchamia go jednym poleceniem. Według danych Fastlane Docs, 2025, narzędzie jest używane w ponad 1,5 mln projektów na całym świecie. Fastlane łączy narzędzia do pracy z App Store Connect, Google Play Console i systemami podpisywania kodu.
Najważniejsze
Fastlane to narzędzie do automatyzacji mobilnych budów, napisane w Ruby i dystrybuowane na licencji MIT. Automatyzuje rutynowe zadania programisty mobilnego: budowanie aplikacji, uruchamianie testów, tworzenie zrzutów ekranu, podpisywanie kodu i przesyłanie plików binarnych do App Store lub Google Play. Zamiast 15–20 ręcznych poleceń programista uruchamia jedną komendę fastlane z nazwą scenariusza.
Fastlane działa jako opakowanie dla narzędzi Xcode (xcodebuild, xcrun) i Android SDK (gradlew, apksigner, bundletool), zapewniając jednolity interfejs dla obu platform. Jest to szczególnie cenne dla zespołów, które utrzymują wersje iOS i Android tej samej aplikacji — identyczne Fastfile mogą opisywać budowanie dla obu platform z minimalnymi różnicami w parametrach.
Według danych GitHub, Fastlane ma ponad 39 tysięcy gwiazdek i jest standardem automatyzacji w tworzeniu aplikacji mobilnych. Narzędzie jest wspierane przez społeczność i firmę Google — Fastlane jest zintegrowany z Firebase jako zalecany sposób dostarczania aplikacji Android do Google Play Console.
Architektura Fastlane opiera się na trzech poziomach: actions (podstawowe polecenia), lanes (scenariusze) i narzędzia (wyspecjalizowane narzędzia). Actions to poszczególne funkcje Fastlane, z których każda wykonuje konkretne działanie: tworzenie zrzutu ekranu, budowanie IPA, przesyłanie do TestFlight. Lanes łączą kilka actions w sekwencyjny scenariusz opisany w Fastfile.
Actions to elementy składowe Fastlane. Każdy action przyjmuje parametry i wykonuje jedno zadanie. Na przykład action gym buduje aplikację iOS, scan uruchamia testy, pilot przesyła build do TestFlight. W Fastlane jest ponad 200 wbudowanych actions, dokumentacja każdego z nich jest dostępna przez polecenie fastlane action [nazwa].
Jeśli wbudowanych actions jest za mało, programista może utworzyć custom action w Ruby i podłączyć go w Fastfile. Custom actions są dystrybuowane przez wtyczki Fastlane, które publikowane są w Rubygems i instalowane przez plik FastfilePlugin w katalogu głównym projektu.
Lane to nazwany scenariusz automatyzacji, który łączy kilka actions w logiczną sekwencję. Lane może wywoływać inne lanes (private lanes), przekazywać parametry i obsługiwać błędy. Pozwala to budować hierarchię scenariuszy: podstawowy lane budowania, lane wdrażania, lane pełnego cyklu CI/CD.
Fastlane zawiera zestaw wyspecjalizowanych narzędzi, z których każde rozwiązuje konkretne zadanie automatyzacji mobilnej. Narzędzia są uruchamiane jako actions wewnątrz lanes lub bezpośrednio z wiersza poleceń. Przyjrzyjmy się czterem kluczowym narzędziom, które pokrywają podstawowe potrzeby CI/CD dla iOS i Android.
| Narzędzie | Przeznaczenie | Polecenie |
|---|---|---|
| scan | Uruchamianie testów Unit i UI na symulatorze iOS | fastlane scan |
| gym | Budowanie pliku IPA lub APP dla iOS | fastlane gym |
| match | Synchronizacja certyfikatów i provisioning profiles przez Git | fastlane match |
| deliver | Przesyłanie pliku binarnego i metadanych do App Store Connect | fastlane deliver |
| snapshot | Automatyczne generowanie zrzutów ekranu na różnych urządzeniach | fastlane snapshot |
Scan upraszcza uruchamianie testów Xcode, automatycznie wybierając odpowiedni symulator i formatując raport. Gym buduje aplikację z optymalnymi flagami kompilacji i obsługuje exportOptions.plist dla różnych typów budowania (development, adhoc, appstore). Deliver umożliwia przesyłanie nie tylko pliku binarnego, ale także zrzutów ekranu, opisu, wersji i cen przez jeden plik metadanych.
Narzędzie Match zasługuje na szczególną uwagę — rozwiązuje problem przechowywania i synchronizacji certyfikatów iOS w zespole. Match szyfruje i przechowuje certyfikaty oraz provisioning profiles w repozytorium Git, a programiści otrzymują je automatycznie przy uruchomieniu fastlane match. Eliminuje to ręczną konfigurację każdego stanowiska pracy.
Snapshot to narzędzie do automatycznego tworzenia zrzutów ekranu aplikacji mobilnej na różnych urządzeniach i językach. Snapshot uruchamia testy UI na symulatorach iOS, robiąc zrzuty ekranu na każdym kroku testu. Wyniki są zapisywane w katalogu fastlane/screenshots i mogą być przesłane do App Store Connect przez deliver.
Dla Android screengrab wykonuje podobną funkcję na emulatorach Android. Oba narzędzia obsługują lokalizację — zrzuty ekranu są tworzone dla każdego języka, co ułatwia przygotowanie materiałów do publikacji w wielojęzycznych sklepach z aplikacjami.
Dla projektów iOS Fastlane konfiguruje się przez Gemfile (instalacja gema fastlane) i Fastfile w katalogu fastlane. Wstępna konfiguracja odbywa się przez polecenie fastlane init, które tworzy podstawową strukturę katalogów, pyta o dane App Store Connect i generuje szablon Fastfile z podstawowymi lanes.
Kluczowym poleceniem dla iOS jest fastlane match, które należy wykonać jako pierwsze, aby uzyskać certyfikaty i provisioning profiles. Po pomyślnym podpisaniu Fastlane może budować aplikację (gym), uruchamiać testy (scan) i przesyłać plik binarny (pilot lub deliver).
# Fastfile dla aplikacji iOS
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: 'Nowa wersja została przesłana do TestFlight')
end
Do pracy z TestFlight użyj pilot action — przesyła on IPA i zarządza testerami. Fastlane obsługuje upload_to_testflight (synonim pilot) i automatycznie obsługuje oczekiwanie na przetworzenie builda przez Apple, co może zająć od 5 do 30 minut.
Dla projektów Android Fastlane konfiguruje się podobnie, ale zamiast narzędzi Xcode używa się Gradle i Android SDK. Fastlane dla Android obsługuje budowanie APK i AAB, podpisywanie przez apksigner lub jarsigner, uruchamianie testów instrumentalnych i przesyłanie do Google Play Console przez Supply action.
Kluczowa różnica — budowanie Android nie wymaga zarządzania certyfikatami przez match (podpisywanie Android jest zarządzane przez Keystore, który jest przechowywany osobno). Fastlane dla Android używa gradle action do uruchamiania dowolnych zadań Gradle i supply action do pracy z Google Play.
# Fastfile dla aplikacji Android
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
Do pracy z Google Play Console wymagane jest konto serwisowe Google Cloud z dostępem do API Google Play. Fastlane przyjmuje klucz JSON konta serwisowego przez zmienną środowiskową SUPPLY_JSON_KEY lub parametr json_key w action supply. Track publikacji może być internal, alpha, beta lub production.
Fastlane integruje się z dowolnymi systemami CI/CD, które mogą wykonywać skrypty Ruby: Jenkins, Travis CI, GitHub Actions, GitLab CI, Bitrise i CircleCI. Integracja sprowadza się do instalacji gema fastlane i uruchomienia polecenia fastlane [lane_name] w etapie script potoku.
Dla CI/CD ważne jest skonfigurowanie zmiennych środowiskowych do przechowywania wrażliwych danych: MATCH_PASSWORD (hasło szyfrowania certyfikatów), FASTLANE_USER (Apple ID), FASTLANE_PASSWORD (hasło Apple ID). W Travis CI zmienne są szyfrowane przez travis encrypt, w GitHub Actions — przez Secrets repository.
Zalecaną praktyką jest używanie fastlane match w CI/CD z flagą readonly, aby zapobiec przypadkowym zmianom w repozytorium certyfikatów. Dla Android użyj Keystore zakodowanego w Base64 i zapisanego w zmiennej środowiskowej, który jest deszyfrowany i zapisywany do pliku tymczasowego na etapie before_install.
Fastlane Match to narzędzie do automatyzacji zarządzania certyfikatami iOS i provisioning profiles, jedna z najcenniejszych funkcji Fastlane dla zespołów. Match tworzy zaszyfrowane repozytorium Git (lub używa istniejącego), w którym przechowuje wszystkie certyfikaty i profile, synchronizując je między programistami a serwerami CI/CD.
Match obsługuje pięć typów profili: development, adhoc, appstore, enterprise i developer_id. Każdy typ jest przechowywany w osobnym katalogu wewnątrz repozytorium. Polecenie fastlane match development instaluje certyfikaty development na lokalnej maszynie, a fastlane match appstore — profile App Store do budowania na CI.
# Używanie Match w Fastfile
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
Bezpieczeństwo Match zapewnia szyfrowanie wszystkich plików przed commitem do Git. Hasło szyfrowania jest ustawiane przez zmienną środowiskową MATCH_PASSWORD i musi być takie samo dla wszystkich członków zespołu. Match używa OpenSSL do szyfrowania i nie przechowuje hasła w otwartej formie w repozytorium.
Często zadawane pytania
Fastlane to narzędzie automatyzacji typu open source dla aplikacji iOS i Android. Automatyzuje budowanie, testowanie, podpisywanie kodu i dostarczanie do App Store i Google Play przez jeden plik konfiguracyjny Fastfile i zestaw wbudowanych narzędzi.
Główne narzędzia Fastlane: scan (testy), gym (budowanie iOS), match (certyfikaty), deliver (App Store), pilot (TestFlight), snapshot (zrzuty ekranu), supply (Google Play) i frameit (ramki do zrzutów ekranu). Każde narzędzie jest dostępne jako action wewnątrz lane lub z wiersza poleceń.
Zainstaluj gem fastlane, wykonaj fastlane init w katalogu głównym projektu. Skonfiguruj Fastfile z lanes do budowania (gym) i testów (scan). Skonfiguruj Match do zarządzania certyfikatami przez repozytorium Git. Dodaj lane wdrażania z pilot lub deliver do przesyłania do App Store Connect.
Wykonaj fastlane init z podaniem package name. Użyj gradle action do uruchamiania zadań Gradle (assembleRelease, testReleaseUnitTest). Skonfiguruj Keystore przez zmienne środowiskowe. Użyj supply action do przesyłania AAB lub APK do Google Play Console na wybrany track.
Zainstaluj gem fastlane na serwerze CI/CD i dodaj polecenie fastlane [lane_name] w etapie script potoku. Skonfiguruj zmienne środowiskowe FASTLANE_USER, FASTLANE_PASSWORD i MATCH_PASSWORD w sekretnych zmiennych CI/CD. Użyj match readonly dla CI, aby uniknąć przypadkowych zmian certyfikatów.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również