CI/CD app mobile: setup Fastlane

CI/CD app mobile: setup Fastlane

Fastlane e uno strumento open source che automatizza build, code signing, screenshot, beta e deploy per app iOS e Android. Combinato con GitHub Actions, GitLab CI o Bitrise, riduce il rilascio da ore a minuti e elimina i passaggi manuali soggetti a errore.

Cosa offre Fastlane

Lane configurabili in Ruby: ogni lane raggruppa step (build, sign, upload). Action come gym (build iOS), match (gestione certificati), pilot (TestFlight), supply (Play Store), screengrab (screenshot) coprono i casi più comuni. Match in particolare gestisce certificati e profili in un repository git privato.

Code signing iOS

Match centralizza certificati e profili in un repository cifrato (git o storage S3). Ogni dev e ogni runner CI puo scaricarli con una chiave condivisa. Niente più "funziona sul mio Mac" o profili scaduti.

Pipeline tipica

Trigger push o tag, checkout, install dipendenze, test, build, sign, upload a TestFlight/Play Internal. Aggiungi step di linting (SwiftLint, ktlint), security scan e size report. Notifica Slack su successo o fallimento.

Match e gestione certificati

Match cripta certificati e profili con una passphrase condivisa. Genera ed archivia automaticamente nuovi profili. Workflow tipico: master branch nel repository Match, accesso read-only per CI, scrittura solo da macchina developer di reference. Riduce a zero i problemi di "certificato mancante sul mac di build".

Pipeline GitHub Actions

Workflow YAML che triggera su tag v*.*.*. Step: checkout, setup Ruby/Java, cache, install pods/gradle, run tests, build, deploy. macOS runner per iOS (più costosi), Ubuntu runner per Android. Secret per match passphrase, app store connect API key, Play console service account.

Fastlane plugin ecosystem

Centinaia di plugin community: firebase_app_distribution per beta interne, slack per notifiche, semantic_release per versioning, increment_version_number per gestione semver. Personalizza Fastfile con plugin già testati invece di scrivere shell script fragili.

Multi-environment

Lane separate per dev, staging, production. Configurazione via .env.dev, .env.staging, .env.production. Bundle id e App ID separati per evitare conflitti. ProductFlavors Android, Build Configurations iOS. Test ogni ambiente prima del rilascio production.

App Store Connect API

App Store Connect API consente automation completa: upload build, gestione TestFlight, metadata, screenshot. Crea API key in App Store Connect, salva .p8 e key_id come secret CI. Fastlane gym e pilot la usano automaticamente. Niente più username/password con 2FA che blocca pipeline.

Screenshot automation

Fastlane snapshot (iOS) e screengrab (Android) catturano screenshot automaticamente da UI test. Configura device list, lingue, orientazioni. Pipeline che genera 200+ screenshot localizzati in minuti, da utilizzare per metadata App Store. Combinato con frameit per cornici device, produce screenshot di qualità marketing.

Procedura passo-passo

  1. Installa Fastlane con sudo gem install fastlane.
  2. Esegui fastlane init nella root del progetto.
  3. Crea Fastfile con lane "build", "beta", "release".
  4. Configura match con il tuo repository privato.
  5. Imposta variabili sensibili in CI come secret.
  6. Integra in GitHub Actions/GitLab CI con i workflow YAML.
  7. Testa la pipeline su branch di staging prima di main.

Performance del CI

macOS runner sono costosi: GitHub Actions $0.08/min, GitLab $0.16/min. Bitrise e Xcode Cloud offrono macOS dedicato a prezzo fisso mensile. Per organizzazioni grandi, self-hosted macOS in cloud (MacStadium, AWS EC2 Mac) ottimizza costi. Cache aggressivo (gem, pod, gradle) dimezza tempi di build dopo prima esecuzione.

Errori comuni e come risolverli

  • Certificati non sincronizzati: usa match per centralizzare.
  • Secret in chiaro: usa il vault del CI, mai commit.
  • Mac runner costoso: usa Xcode Cloud o macOS-on-demand.
  • Build non riproducibile: pin delle dipendenze (Gemfile.lock, Podfile.lock).
  • Cache mancante: aggiungi cache di pod, gradle, gem per ridurre tempi.

Domande frequenti

D: Fastlane funziona con Flutter e React Native?
R: Si, e ampiamente usato anche con framework cross-platform.

D: Posso firmare iOS senza Mac?
R: No, serve sempre un Mac (locale o cloud) per Xcode build.

D: Match supporta Apple Silicon?
R: Si, completamente.

D: Fastlane funziona su Windows?
R: Per Android si. Per iOS serve Mac (Fastlane gira su Linux/Windows ma build iOS richiede Xcode).

Investment giustificato

Setup iniziale 2-4 settimane, ma payback rapido. Riduce tempo di rilascio da ore a minuti. Elimina errori manuali. Permette release più frequenti, aumentando agility del prodotto. Per team mobile seri, CI/CD non e opzionale ma essenziale. Lessons learned: investe in pipeline robusta prima che il team raggiunga sofferenza dovuta a release manuale.

Conclusione

Fastlane resta lo standard de facto. Alternative (Xcode Cloud, EAS Build) hanno vantaggi specifici ma Fastlane ha flessibilita massima. Investe in setup iniziale, poi gode di benefici per anni. Documentation chiara e onboarding facilitato per nuovi developer.

Sicurezza dei secret in CI e critica. Mai committarsi in repository. Usa vault del CI (GitHub Actions Secrets, GitLab CI Variables, AWS Secrets Manager). Rotazione periodica delle chiavi. Audit accessi. Per organizzazioni con compliance requirement (banche, sanita), implementa key management dedicato con HSM.

Pipeline efficaci richiedono cache configurato bene: cache pod e gradle dependencies, cache di gem Ruby, cache di Xcode DerivedData (con cautela). Dopo prima esecuzione lenta, build successive completano in pochi minuti invece di decine. Investe tempo in ottimizzare cache early on, paga in time risparmiato per anni.

Hai bisogno di aiuto?

Se vuoi sviluppare la tua app con G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?