Fastlane è uno strumento di automazione delle build e della pubblicazione di applicazioni mobili per iOS e Android. Fastlane gestisce la firma del codice, la compilazione, l'esecuzione dei test, la creazione di screenshot e il caricamento su App Store Connect e Google Play Console. È lo standard de facto per il CI/CD nello sviluppo mobile.
Punti chiave
Fastlane è uno strumento open-source che automatizza le attività di routine dello sviluppo mobile: compilazione dell'applicazione, esecuzione dei test, creazione di screenshot, gestione dei certificati e caricamento dei build su TestFlight, App Store e Google Play. Fastlane è scritto in Ruby e distribuito tramite RubyGems con il comando gem install fastlane.
Fastlane è apparso nel 2015 come strumento per iOS, ma si è rapidamente esteso ad Android. Oggi è un ecosistema di decine di azioni — comandi integrati che possono essere combinati in scenari chiamati lanes. Ogni lane esegue un compito specifico: ad esempio, build_release compila la versione di rilascio e deploy_beta carica il build su TestFlight.
Fastlane è utilizzato da aziende come Uber, Airbnb, Snapchat, Twitter e Shopify. Secondo un sondaggio del 2024, oltre il 60% degli sviluppatori iOS utilizza Fastlane nei propri progetti. Lo strumento supporta sia l'esecuzione locale che l'integrazione con sistemi CI cloud, rendendolo lo standard de facto per il CI/CD mobile.
# Installazione di Fastlane
sudo gem install fastlane -NV
# Inizializzazione nel progetto
fastlane init
Dopo l'inizializzazione, Fastlane crea una directory fastlane/ con tre file: Fastfile (scenari), Appfile (impostazioni dell'app) e Matchfile (impostazioni dei certificati). Questa struttura rimane la stessa per entrambe le piattaforme — iOS e Android.
Il file di configurazione principale di Fastlane è Fastfile. Si trova nella directory fastlane/ nella radice del progetto. Fastfile è scritto in Ruby: ogni lane è un blocco nominato con una sequenza di azioni. Una lane può accettare parametri, chiamare altre lane e restituire valori.
# fastlane/Fastfile — esempio per 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
Ogni lane viene eseguita con il comando fastlane ios beta o fastlane ios release. Fastfile supporta variabili, condizioni, cicli e chiamate a script esterni — è un file Ruby completo. Gli sviluppatori possono riutilizzare il codice tramite private_lane (metodi locali) e import da altri Fastfile.
Fastlane fornisce oltre 200 azioni integrate per la maggior parte delle attività. Se l'azione necessaria non esiste, puoi scriverne una personalizzata in Ruby o chiamare un comando shell con sh("..."). Le azioni possono accettare parametri — impostazioni di build, percorsi, token di accesso — e restituire risultati per l'uso nei passaggi successivi.
Fastlane per iOS risolve tre problemi chiave: gestione di certificati e provisioning profiles, compilazione IPA tramite Xcode e pubblicazione su App Store Connect e TestFlight. Ciascuno di questi compiti è coperto da un'azione separata.
match è un'azione per la gestione dei certificati. Memorizza tutti i certificati e i provisioning profiles in un repository Git crittografato. Ogni sviluppatore e server CI utilizza lo stesso set di file, eliminando conflitti e problemi con certificati scaduti. Match aggiorna automaticamente i profili quando vengono aggiunti nuovi dispositivi.
sigh crea e scarica un provisioning profile tramite l'Apple Developer Portal. Viene utilizzato quando è necessario ottenere rapidamente un profilo per un tipo specifico: development, ad-hoc o appstore.
gym compila l'IPA. Gym racchiude xcodebuild con parametri ottimali, seleziona automaticamente schema, configurazione, opzioni di esportazione e crea un IPA firmato. Esempio: gym(scheme: "MyApp", export_method: "app-store").
pilot gestisce TestFlight. Carica il build, aggiunge tester e tiene traccia dello stato della revisione. deliver gestisce la pubblicazione completa sull'App Store, inclusi metadati, screenshot, prezzi e versioni.
# Compilazione e pubblicazione di un'app 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
Per lavorare con App Store Connect sono necessari token di accesso. Fastlane supporta due metodi di autenticazione: chiave API App Store Connect (consigliata) e Apple ID con autenticazione a due fattori. Le chiavi API sono più convenienti per il CI/CD poiché non richiedono l'inserimento interattivo della password.
| Azione | Scopo | Equivalente manuale |
|---|---|---|
match | Gestione certificati e profili | Apple Developer Portal |
sigh | Creazione provisioning profile | Xcode + Developer Portal |
gym | Compilazione IPA | xcodebuild + xcrun |
pilot | Caricamento TestFlight | Xcode Organizer |
deliver | Pubblicazione App Store | App Store Connect Web |
scan | Esecuzione test UI | xcodebuild test |
Su Android, Fastlane automatizza la compilazione tramite Gradle, la firma di APK e AAB, il caricamento su Google Play Console e Firebase App Distribution.
gradle è l'azione principale per le build Android. Chiama il wrapper Gradle con le attività necessarie: gradle(task: "assembleRelease") o gradle(task: "bundleRelease") per AAB. È possibile passare flag, variabili d'ambiente e il percorso di gradle.properties.
supply carica APK o AAB su Google Play Console. Supply gestisce versioni, track (internal, alpha, beta, production), note di rilascio, prezzi e distribuzione per paese. Esempio: supply(track: "beta", release_status: "completed").
screengrab crea screenshot per Google Play. Esegue test di strumentazione che catturano screenshot dell'app su diversi dispositivi e lingue. Gli screenshot risultanti vengono caricati tramite supply.
# Compilazione e pubblicazione di un'app Android
lane :deploy_android do
gradle(task: "clean bundleRelease")
supply(
track: "beta",
release_status: "completed",
version_code: 42
)
end
| Azione | Scopo | Equivalente manuale |
|---|---|---|
gradle | Compilazione con Gradle | ./gradlew assembleRelease |
supply | Caricamento su Google Play | Google Play Console Web |
screengrab | Creazione screenshot | Screenshot manuale + ImageMagick |
firebase_app_distribution | Distribuzione tramite Firebase | Firebase Console Upload |
Fastlane è progettato per funzionare in pipeline CI/CD. Gestisce correttamente la modalità non interattiva, le variabili d'ambiente e gli artefatti di build. Di seguito sono riportati esempi di integrazione con i sistemi CI più diffusi.
In GitHub Actions, Fastlane viene eseguito come script Ruby. Un flusso di lavoro tipico: installare Ruby e Fastlane, configurare le chiavi (certificati, token API tramite secrets) ed eseguire la lane. iOS richiede un runner macOS; Android funziona su ubuntu-latest.
In GitLab CI, Fastlane viene utilizzato in .gitlab-ci.yml con configurazione simile: installare le dipendenze, eseguire fastlane e passare gli artefatti. GitLab CI supporta runner macOS e Linux.
Bitrise — un CI/CD specializzato per applicazioni mobili — ha il supporto integrato per Fastlane. Bitrise Workflow può chiamare il Fastlane Step o eseguire script personalizzati con fastlane. Bitrise gestisce i certificati tramite il proprio gestore di firma del codice.
# Fastfile per CI/CD con esecuzione condizionale dei test
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 aspetto importante dell'integrazione CI/CD è l'archiviazione dei segreti. Fastlane utilizza il file .env tramite dotenv e variabili d'ambiente. Per iOS, le variabili critiche sono: MATCH_PASSWORD, FASTLANE_APPLE_API_KEY, FASTLANE_APPLE_API_KEY_ID. Per Android: SUPPLY_JSON_KEY_DATA — il contenuto dell'account di servizio Google Play.
Fastlane include oltre 200 azioni integrate. Di seguito è riportata una panoramica delle più popolari con piattaforma e descrizione.
| Azione | Piattaforma | Descrizione |
|---|---|---|
gym | iOS | Compilare IPA con parametri xcodebuild ottimizzati |
match | iOS | Sincronizzare certificati e provisioning profile tramite Git |
pilot | iOS | Caricare build su TestFlight e gestire tester |
deliver | iOS | Pubblicare app sull'App Store con metadati |
scan | iOS | Eseguire test unitari e UI con generazione di report |
gradle | Android | Eseguire attività Gradle: assemble, bundle, test |
supply | Android | Caricare APK e AAB su Google Play Console |
screengrab | Android | Screenshot automatici per Google Play |
firebase_app_distribution | Android | Distribuire build tramite Firebase |
snapshot | iOS | Screenshot automatici su simulatori per App Store |
increment_build_number | iOS | Auto-incremento del numero di build nel progetto Xcode |
appcenter_upload | Entrambe | Caricare build su App Center |
Per trovare l'azione necessaria, utilizzare il comando fastlane action [nome], che mostra documentazione, parametri ed esempi. L'elenco completo è disponibile localmente: fastlane actions.
Fastlane supporta anche plugin — estensioni della community che aggiungono nuove azioni. I plugin vengono installati tramite fastlane add_plugin [nome] e sono disponibili nel registro RubyGems. Esempi di plugin popolari: fastlane-plugin-versioning (gestione versioni), fastlane-plugin-sentry (caricare simboli di debug su Sentry), fastlane-plugin-teams (notifiche in Microsoft Teams).
Domande frequenti
Fastlane è uno strumento per automatizzare la compilazione e la pubblicazione di applicazioni mobili. Sostituisce le operazioni manuali — compilazione, firma del codice, caricamento negli store — con un singolo comando. Fastlane riduce i tempi di rilascio da ore a minuti ed elimina gli errori umani durante la pubblicazione.
Sì. Fastlane supporta entrambe le piattaforme indipendentemente. iOS richiede macOS, mentre Android necessita solo di Linux. In un unico Fastfile puoi separare le lanes per piattaforma: platform :ios do ... end e platform :android do ... end.
Attraverso l'azione match. Memorizza certificati crittografati e provisioning profile in un repository Git. Ogni sviluppatore clona il repository, match decifra i file utilizzando la password dalla variabile MATCH_PASSWORD e li installa nel portachiavi. Questo risolve il problema "funziona sulla mia macchina".
Sì. Fastlane ha un'azione integrata firebase_app_distribution per caricare APK e IPA su Firebase App Distribution. È disponibile anche firebase_app_distribution_add_testers per aggiungere tester. Un'alternativa è l'azione appcenter_upload per App Center.
Fastlane viene installato tramite RubyGems: gem install fastlane -NV. iOS richiede macOS con Xcode; Android richiede Linux o macOS con JDK e Android SDK. In GitHub Actions è disponibile l'azione ruby/setup-ruby per installare Ruby e Fastlane. Le variabili d'ambiente vengono passate tramite i secrets del sistema CI.
Fastlane è una libreria e CLI per automatizzare le attività di build e pubblicazione. Bitrise e Jenkins sono piattaforme CI/CD complete. Fastlane funziona all'interno di esse: Jenkins esegue Fastlane come passaggio della pipeline, Bitrise chiama Fastlane tramite un Step dedicato. Fastlane non sostituisce un sistema CI — lo completa con funzionalità specifiche per il mobile.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche