CI/CD (Continuous Integration / Continuous Delivery) è la pratica di creare, testare e distribuire automaticamente un'applicazione a ogni modifica del codice. Secondo Statista (2025), l'80% dei team di sviluppo mobile utilizza CI/CD. Questo articolo copre gli strumenti CI più popolari, Fastlane per l'automazione delle build mobili, oltre a Canary Release e Feature Flags.
Punti chiave
Continuous Integration è il fondamento dell'automazione CI/CD per le app mobili. È una pratica in cui ogni sviluppatore unisce il proprio codice in un repository condiviso più volte al giorno. Dopo ogni push, il server CI crea automaticamente il progetto ed esegue i test. Se i test falliscono, la build è considerata rotta e il team risolve il problema immediatamente. La CI previene la situazione «funziona sulla mia macchina» in cui il codice di uno sviluppatore rompe quello di un altro.
Build Pipeline — una sequenza di passaggi eseguiti a ogni push: linting del codice → test unitari → build debug APK/IPA → test di integrazione → build release. Ogni passaggio viene eseguito solo dopo il successo del precedente. Gli artefatti di build — APK, IPA, AAB, rapporti di test — vengono salvati e sono disponibili per il download.
Continuous Delivery — il codice viene buildato e testato automaticamente, ma una persona decide se rilasciare in produzione. Continuous Deployment — ogni build riuscita viene automaticamente rilasciata in produzione. Per le app mobili, il CD (consegna agli store) tramite TestFlight o Internal Testing è più comune, poiché la decisione finale di pubblicazione è presa dallo sviluppatore o dal manager. Staging — ambiente il più vicino possibile alla produzione, utilizzato per testare la build prima del rilascio.
GitHub Actions è un sistema CI/CD integrato per automatizzare le app mobili su GitHub. Actions utilizza la configurazione YAML (.github/workflows) per definire le pipeline. Azioni pronte sono disponibili per lo sviluppo mobile: actions/setup-java, gradle-build-action per Android, xcodebuild-action per iOS. GitHub Actions fornisce 2000 minuti gratuiti al mese per i repository privati.
Esempio: un workflow Android include checkout del codice, impostazione JDK 17, caching delle dipendenze Gradle, esecuzione di lint e test unitari, build APK e upload degli artefatti. Per iOS — checkout, impostazione Xcode, pod install, esecuzione XCTest, archiviazione ed export IPA. GitHub Actions si integra con GitHub Releases, Slack e Telegram per le notifiche.
GitLab CI è un sistema CI/CD integrato in GitLab, configurato tramite .gitlab-ci.yml. GitLab CI utilizza runner — agenti che eseguono i job. Per lo sviluppo mobile puoi usare runner condivisi (Linux per Android) o runner propri (macOS per iOS). GitLab CI supporta job paralleli, artefatti, ambienti e approvazione manuale per i rilasci in produzione.
Bitrise è una piattaforma CI/CD specializzata nell'automazione di app mobili. Bitrise offre Step pronti per Android, iOS, Flutter e React Native: Gradle Runner, Xcode Archive, Flutter Test, CocoaPods Install. Bitrise configura automaticamente la firma del codice per iOS (tramite Codesigndoc) e fornisce macchine virtuali con Xcode, Android SDK, Flutter e altri strumenti preinstallati.
Vantaggi di Bitrise: configurazione semplice tramite l'editor visuale di Workflow, supporto per build parallele, integrazione con Firebase Test Lab, App Store Connect e Google Play Console. Bitrise offre 90 minuti gratuiti al mese per progetti personali. In IT Sectr usiamo Bitrise per tutti i progetti mobili — semplifica notevolmente il CI/CD rispetto alla configurazione manuale di GitHub Actions.
| Criterio | GitHub Actions | GitLab CI | Bitrise | CircleCI |
|---|---|---|---|---|
| Specializzazione | Generale | Generale | Mobile | Generale |
| macOS per iOS | Sì (macOS runner) | Runner proprio | Sì (integrato) | Sì (macOS) |
| Limite gratuito | 2000 min/mese | 400 min/mese | 90 min/mese | 6000 min/mese |
| Integrazione Fastlane | Tramite run script | Tramite run script | Step pronto | Tramite run script |
| Code Signing | Configurazione manuale | Configurazione manuale | Automatica | Tramite Fastlane |
| Build parallele | Sì | Sì | Sì | Sì |
Fastlane è uno strumento di automazione per app mobili iOS e Android, scritto in Ruby. Fastlane è composto da un sistema di azioni pronte (oltre 200) e un DSL per descrivere scenari tramite Fastfile. Fastlane risolve le attività che ogni sviluppatore mobile esegue manualmente: firma del codice, generazione di screenshot, caricamento su TestFlight e Google Play, gestione di certificati e profili di provisioning.
Lane — uno scenario nominato in Fastfile. Esempio: lane :release do — una catena di azioni per pubblicare un rilascio. Match — uno strumento per archiviare e sincronizzare in modo sicuro certificati e profili di provisioning tramite un repository Git crittografato. Gym — build e archiviazione di app iOS (un wrapper su xcodebuild). Pilot — caricamento e gestione delle build in TestFlight. Deliver — caricamento dell'app e dei metadati su App Store Connect. Snapshot — generazione automatica di screenshot in tutte le lingue. Screengrab — generazione automatica di screenshot per Android.
Esempio di Fastfile per Android: lane :beta chiama gradle (assembleRelease), poi firebase_app_distribution per la distribuzione ai tester. Per iOS: lane :beta chiama match (download certificati), gym (archiviazione) e pilot (caricamento su TestFlight). Fastlane può essere eseguito localmente e su un server CI — rendendolo uno strumento universale in qualsiasi progetto mobile.
Canary Release è una strategia di automazione CI/CD per distribuire una nuova versione dell'app a una piccola percentuale di utenti (1–5%) prima del rilascio completo. In Google Play Console è implementato tramite Staged Rollout: pubblichi un aggiornamento al 5% del tuo pubblico, monitori crash e metriche e aumenti la percentuale se non ci sono problemi. In App Store Connect — tramite Phased Release for Automatic Updates.
A/B Testing — confronto di due versioni di una funzionalità su gruppi casuali di utenti. Nello sviluppo mobile, i test A/B vengono condotti tramite Feature Flags, Firebase Remote Config o logica lato server. Canary Release e test A/B minimizzano i rischi durante il rilascio di nuove funzionalità.
Feature Flag (Feature Toggle) — attivazione condizionale di funzionalità senza distribuire nuovo codice. Un Feature Flag è un controllo nel codice: if (featureFlag.isEnabled()) { /* nuovo codice */ } else { /* vecchio codice */ }. I flag sono gestiti tramite servizi: LaunchDarkly, Split.io, Firebase Remote Config. I Feature Flags consentono agli sviluppatori di unire il codice in main anche se la funzionalità non è ancora pronta per gli utenti.
LaunchDarkly — la piattaforma di gestione Feature Flags più popolare. LaunchDarkly fornisce SDK per iOS, Android, Flutter e React Native. Puoi attivare funzionalità per utenti specifici, segmenti, regioni o una percentuale del pubblico. I Feature Flags sono usati anche come kill switch — disattivazione immediata di una funzionalità problematica senza pubblicare una nuova versione dell'app.
Domande frequenti
Inizia con GitHub Actions — se il tuo codice è su GitHub. Actions è gratuito per repository pubblici, ha supporto integrato per Android e iOS (macOS runner) e un enorme ecosistema di azioni pronte. Per specializzazione mobile — Bitrise.
No, i servizi CI (GitHub Actions, Bitrise, CircleCI) forniscono macOS runner. Paghi per minuti di utilizzo. Per il debug locale di Fastlane serve un Mac, ma la CI può funzionare nel cloud.
Canary Release — distribuzione di una nuova versione a un sottoinsieme di utenti per verificare la stabilità. Test A/B — confronto di due varianti di una funzionalità per scegliere la migliore. Canary riguarda l'affidabilità, A/B riguarda la conversione.
Fastlane non è obbligatorio ma altamente raccomandato. Senza Fastlane dovresti eseguire manualmente xcodebuild, gestire i certificati e caricare le build tramite interfaccia web. Fastlane automatizza tutte queste attività con un solo comando.
Match è uno strumento Fastlane per gestire i certificati di Code Signing iOS. Match memorizza certificati e profili di provisioning in un repository Git crittografato e li sincronizza tra tutti gli sviluppatori e il server CI.
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.