Fastlane — instrument de automatizare a buildurilor și publicării aplicațiilor mobile pentru iOS și Android. Fastlane gestionează semnarea codului, buildul, rularea testelor, crearea de screenshoturi și încărcarea în App Store Connect și Google Play Console. Este standardul de facto pentru CI/CD în dezvoltarea mobilă.
Concluzii principale
Fastlane — este un instrument open-source care automatizează sarcinile de rutină ale dezvoltării mobile: buildul aplicației, rularea testelor, crearea de screenshoturi, gestionarea certificatelor, încărcarea buildurilor în TestFlight, App Store și Google Play. Fastlane este scris în Ruby și distribuit prin RubyGems cu comanda gem install fastlane.
Fastlane a apărut în 2015 ca instrument pentru iOS, dar s-a extins rapid pe Android. Astăzi este un ecosistem de zeci de acțiuni — comenzi încorporate care pot fi combinate în scenarii numite lanes. Fiecare lane îndeplinește o sarcină specifică: de exemplu, build_release construiește versiunea release, iar deploy_beta încarcă buildul în TestFlight.
Fastlane este utilizat de companii precum Uber, Airbnb, Snapchat, Twitter și Shopify. Potrivit unui sondaj din 2024, peste 60% dintre dezvoltatorii iOS folosesc Fastlane în proiectele lor. Instrumentul suportă atât rularea locală, cât și integrarea cu sistemele CI cloud, ceea ce îl face standardul de facto pentru CI/CD mobil.
# Instalarea Fastlane
sudo gem install fastlane -NV
# Inițializarea în proiect
fastlane init
După inițializare, Fastlane creează directorul fastlane/ cu trei fișiere: Fastfile (scenarii), Appfile (setări aplicație) și Matchfile (setări certificate). Această structură rămâne aceeași pentru ambele platforme — iOS și Android.
Fișierul principal de configurare Fastlane — Fastfile. Se află în directorul fastlane/ din rădăcina proiectului. Fastfile este scris în Ruby: fiecare lane este un bloc denumit cu o secvență de acțiuni. Lane poate accepta parametri, poate apela alte lanes și poate returna valori.
# fastlane/Fastfile — exemplu pentru iOS
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
Fiecare lane se rulează cu comanda fastlane ios beta sau fastlane ios release. Fastfile suportă variabile, condiții, bucle și apeluri de scripturi externe — este un fișier Ruby complet. Dezvoltatorii pot reutiliza codul prin private_lane (metode locale) și import din alte Fastfile.
Fastlane oferă peste 200 de acțiuni încorporate pentru majoritatea sarcinilor. Dacă acțiunea necesară nu există, se poate scrie una proprie în Ruby sau se poate apela o comandă shell prin sh("..."). Acțiunile pot accepta parametri — setări de build, căi, tokenuri de acces — și pot returna rezultatul pentru utilizarea în pașii următori.
Fastlane pentru iOS rezolvă trei probleme cheie: gestionarea certificatelor și provisioning profiles, buildul IPA prin Xcode și publicarea în App Store Connect și TestFlight. Fiecare dintre aceste sarcini este acoperită de o acțiune separată.
match — acțiune pentru gestionarea certificatelor. Stochează toate certificatele și provisioning profiles într-un depozit Git criptat. Fiecare dezvoltator și server CI folosesc același set de fișiere, ceea ce elimină conflictele și problemele cu certificatele expirate. Match actualizează automat profilurile la adăugarea de noi dispozitive.
sigh — creează și descarcă provisioning profile prin Apple Developer Portal. Se folosește când este nevoie de un profil rapid pentru un tip specific: development, ad-hoc sau appstore.
gym — buildul IPA. Gym îmbracă xcodebuild cu parametri optimi, selectează automat schema, configurația, opțiunile de export și creează un IPA semnat. Exemplu: gym(scheme: "MyApp", export_method: "app-store").
pilot — gestionarea TestFlight. Încarcă buildul, adaugă testeri, urmărește statusul revizuirii. deliver — publicare completă în App Store, inclusiv metadate, screenshoturi, preț și versiuni.
# Buildul și publicarea aplicației iOS
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
Pentru lucrul cu App Store Connect sunt necesare tokenuri de acces. Fastlane suportă două metode de autentificare: App Store Connect API Key (recomandat) și Apple ID cu autentificare în doi factori. Cheile API sunt mai convenabile pentru CI/CD, deoarece nu necesită introducerea interactivă a parolei.
| Acțiune | Scop | Echivalent manual |
|---|---|---|
match | Gestionarea certificatelor și profilurilor | Apple Developer Portal |
sigh | Crearea provisioning profile | Xcode + Developer Portal |
gym | Buildul IPA | xcodebuild + xcrun |
pilot | Încărcarea în TestFlight | Xcode Organizer |
deliver | Publicarea în App Store | App Store Connect Web |
scan | Rularea testelor UI | xcodebuild test |
Pe Android, Fastlane automatizează buildul prin Gradle, semnarea APK și AAB, încărcarea în Google Play Console și Firebase App Distribution.
gradle — acțiunea principală pentru buildul Android. Apelează Gradle wrapper cu sarcinile necesare: gradle(task: "assembleRelease") sau gradle(task: "bundleRelease") pentru AAB. Se pot transmite flaguri, variabile de mediu și calea către gradle.properties.
supply — încărcarea APK sau AAB în Google Play Console. Supply gestionează versiunile, trackurile (internal, alpha, beta, production), notele de lansare, prețul și țara de distribuție. Exemplu: supply(track: "beta", release_status: "completed").
screengrab — crearea de screenshoturi pentru Google Play. Rulează teste de instrumentare care fac screenshoturi ale ecranelor aplicației pe diferite dispozitive și limbi. Screenshoturile obținute sunt încărcate prin supply.
# Buildul și publicarea aplicației Android
lane :deploy_android do
gradle(task: "clean bundleRelease")
supply(
track: "beta",
release_status: "completed",
version_code: 42
)
end
| Acțiune | Scop | Echivalent manual |
|---|---|---|
gradle | Build prin Gradle | ./gradlew assembleRelease |
supply | Încărcarea în Google Play | Google Play Console Web |
screengrab | Crearea de screenshoturi | Screenshot manual + ImageMagick |
firebase_app_distribution | Distribuția prin Firebase | Firebase Console Upload |
Fastlane este proiectat pentru a funcționa în pipeline-uri CI/CD. Acesta gestionează corect modul non-interactiv, variabilele de mediu și artefactele de build. Mai jos — exemple de integrare cu sistemele CI populare.
În GitHub Actions, Fastlane rulează ca script Ruby. Fluxul de lucru tipic: instalarea Ruby și Fastlane, configurarea cheilor (certificate, tokenuri API prin secrets), rularea lane. Pentru iOS este necesar un runner macOS; Android funcționează pe ubuntu-latest.
În GitLab CI, Fastlane este utilizat în .gitlab-ci.yml cu o schemă similară: instalarea dependințelor, rularea fastlane, transmiterea artefactelor. GitLab CI suportă runneri macOS și Linux.
Bitrise — CI/CD specializat pentru aplicații mobile — are suport încorporat pentru Fastlane. Bitrise Workflow poate apela Fastlane Step sau poate rula scripturi arbitrare cu fastlane. Bitrise gestionează certificatele prin propriul manager de Code Signing.
# Fastfile pentru CI/CD cu rulare condiționată a testelor
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
Un aspect important al integrării CI/CD — stocarea secretelor. Fastlane folosește fișierul .env prin dotenv și variabile de mediu. Pentru iOS variabilele critice sunt: MATCH_PASSWORD, FASTLANE_APPLE_API_KEY, FASTLANE_APPLE_API_KEY_ID. Pentru Android: SUPPLY_JSON_KEY_DATA — conținutul contului de serviciu Google Play.
Fastlane include peste 200 de acțiuni încorporate. Mai jos — o prezentare a celor mai populare cu indicarea platformei și scopului.
| Acțiune | Platformă | Descriere |
|---|---|---|
gym | iOS | Build IPA cu parametri optimizați xcodebuild |
match | iOS | Sincronizarea certificatelor și provisioning profiles prin Git |
pilot | iOS | Încărcarea buildului în TestFlight și gestionarea testerilor |
deliver | iOS | Publicarea aplicației în App Store cu metadate |
scan | iOS | Rularea testelor unit și UI cu generare de raport |
gradle | Android | Rularea sarcinilor Gradle: assemble, bundle, test |
supply | Android | Încărcarea APK și AAB în Google Play Console |
screengrab | Android | Screenshoturi automate pentru Google Play |
firebase_app_distribution | Android | Distribuția buildurilor prin Firebase |
snapshot | iOS | Screenshoturi automate pe simulatoare pentru App Store |
increment_build_number | iOS | Autoincrementarea numărului de build în proiectul Xcode |
appcenter_upload | Ambele | Încărcarea buildului în App Center |
Pentru căutarea acțiunii necesare se folosește comanda fastlane action [nume], care afișează documentația, parametrii și exemplele. Lista completă este disponibilă local: fastlane actions.
Fastlane suportă și pluginuri — extensii comunitare care adaugă acțiuni noi. Pluginurile se instalează prin fastlane add_plugin [nume] și sunt disponibile în registrul RubyGems. Exemple de pluginuri populare: fastlane-plugin-versioning (gestionarea versiunilor), fastlane-plugin-sentry (încărcarea simbolurilor de debug în Sentry), fastlane-plugin-teams (notificări în Microsoft Teams).
Frequently Asked Questions
Fastlane — este un instrument de automatizare a buildurilor și publicării aplicațiilor mobile. Este necesar pentru a înlocui operațiile manuale — build, semnare, încărcare în magazine — cu o singură comandă. Fastlane reduce timpul de lansare de la ore la minute și elimină erorile umane la publicare.
Da. Fastlane suportă ambele platforme independent. Pentru iOS este necesar macOS, pentru Android este suficient Linux. Într-un singur Fastfile se pot separa lanes pe platforme: platform :ios do ... end și platform :android do ... end.
Prin acțiunea match. Acesta stochează certificatele criptate și provisioning profiles într-un depozit Git. Fiecare dezvoltator clonează depozitul, match decriptează fișierele cu parola din variabila MATCH_PASSWORD și le instalează în keychain. Aceasta rezolvă problema "se build-ează pe mașina mea".
Da. Fastlane are acțiunea încorporată firebase_app_distribution pentru încărcarea APK și IPA în Firebase App Distribution. De asemenea, este disponibil firebase_app_distribution_add_testers pentru adăugarea testerilor. Alternativa — acțiunea appcenter_upload pentru App Center.
Fastlane se instalează prin RubyGems: gem install fastlane -NV. Pentru iOS este necesar macOS cu Xcode; pentru Android — Linux sau macOS cu JDK și Android SDK. În GitHub Actions există acțiunea gata făcută ruby/setup-ruby pentru instalarea Ruby și Fastlane. Variabilele de mediu se transmit prin secrets ale sistemului CI.
Fastlane — este o bibliotecă și CLI pentru automatizarea sarcinilor de build și publicare. Bitrise și Jenkins — sunt platforme CI/CD complete. Fastlane funcționează în interiorul lor: Jenkins rulează Fastlane ca un pas de pipeline, Bitrise apelează Fastlane printr-un Step special. Fastlane nu înlocuiește sistemul CI, ci îl completează cu specificul mobil.
Summary
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și