Travis CI è una piattaforma CI/CD cloud che automatizza la creazione, il test e il deploy di applicazioni mobili senza gestire la propria infrastruttura. Il servizio si integra direttamente con GitHub e Bitbucket, attivando build a ogni push o Pull Request. Secondo Travis CI, 2025, la piattaforma elabora oltre 10 milioni di build al mese. La configurazione avviene tramite un singolo file YAML .travis.yml nella radice del repository.
Punti chiave
Travis CI è un servizio di integrazione continua basato su cloud che esegue automaticamente build e test quando vengono apportate modifiche a un repository Git. Dopo aver collegato un repository tramite GitHub o Bitbucket, Travis CI tiene traccia di nuovi commit, Pull Request e creazione di tag, eseguendo la configurazione da .travis.yml in un ambiente virtuale isolato.
Il processo di lavoro di Travis CI si compone di tre fasi: trigger (push o Pull Request), configurazione dell'ambiente (install) ed esecuzione delle attività (script). Il servizio seleziona automaticamente una macchina virtuale con un set di strumenti preinstallati — immagini macOS con Xcode per iOS, immagini Linux con Android SDK e livelli API per Android.
Travis CI supporta Build Matrix — un meccanismo di esecuzione parallela della stessa configurazione con parametri diversi. Ad esempio, puoi testare simultaneamente un'applicazione iOS su Xcode 15 e Xcode 16, e un'applicazione Android su API 33 e API 34. Ogni combinazione viene eseguita su una macchina virtuale separata, riducendo il tempo di validazione complessivo.
Travis CI si differenzia da Jenkins e GitLab CI per l'attenzione alla semplicità di configurazione e l'assenza di costi infrastrutturali. Jenkins richiede installazione su un server dedicato e configurazione di agent, GitLab CI richiede un'istanza GitLab autogestita o cloud. Travis CI funziona in abbonamento e non richiede amministrazione di server.
Rispetto a GitHub Actions, Travis CI fornisce immagini macOS più mature per build iOS e documentazione dettagliata sullo sviluppo mobile. GitHub Actions, d'altra parte, è meglio integrato con l'ecosistema GitHub e dispone di più azioni community per attività specifiche di build mobile.
Per lo sviluppo Android, Travis CI offre immagini pronte con Android SDK 34, Gradle 8 e supporto per emulatori. Il tempo di avvio del build è di 45–90 secondi, paragonabile ai concorrenti. Il limite principale è il limite di build parallele, che dipende dal piano tariffario.
L'architettura di Travis CI è costruita su microservizi che gestiscono la coda dei lavori, l'allocazione delle macchine virtuali e l'elaborazione dei risultati. Quando riceve un webhook da GitHub, la piattaforma inserisce il lavoro in una coda, trova una macchina virtuale disponibile con l'immagine linguistica appropriata ed esegue i comandi da .travis.yml.
Ogni build viene eseguita in un ambiente isolato con un'immagine OS pulita. Travis CI supporta tre tipi di ambiente: Ubuntu Linux (standard), macOS (per build iOS e macOS) e Windows (per .NET e UWP). Per i progetti mobili, il supporto di immagini macOS con Xcode e Fastlane preinstallati è fondamentale.
Il ciclo di vita del build include fasi: before_install (configurazione del sistema), install (installazione delle dipendenze), before_script (preparazione dei test), script (esecuzione di test e build), after_script (pulizia). Ogni fase è opzionale e configurabile nel file YAML.
Build Matrix permette di testare un'applicazione con diverse versioni di linguaggio, SDK o ambiente in build parallele. La matrice viene definita tramite le chiavi language, os, env e include la generazione automatica di tutte le combinazioni possibili. Per i progetti mobili, è utile per verificare la compatibilità con diverse versioni di iOS o Android API.
Quando si utilizza la matrice, Travis CI avvia una macchina virtuale separata per ogni combinazione. Ciò aumenta il consumo totale di minuti di build, ma è criticamente importante per i progetti che supportano più versioni di OS. Limita la dimensione della matrice a 4–6 combinazioni per un rapporto ottimale tra copertura e costo.
Il file .travis.yml utilizza il formato YAML ed è composto da chiavi radice: language, os, dist (versione della distribuzione), before_install, install, script e deploy. Ogni chiave può contenere una stringa, un array di comandi o un dizionario per configurazioni più complesse. Travis CI elabora le chiavi in ordine rigoroso, garantendo la prevedibilità dell'esecuzione del build.
Per i progetti iOS, la chiave osx_image con la versione di Xcode è obbligatoria, ad esempio xcode15.2. Per Android — la chiave android con componenti SDK. Travis CI supporta la chiave deploy con provider per il caricamento automatico degli artefatti su App Store Connect, Google Play, Firebase o GitHub Releases dopo un build riuscito.
# .travis.yml con Build Matrix per iOS
language: objective-c
os: osx
osx_image: xcode15.2
env:
- SCHEME=App-iOS
- SCHEME=App-tvOS
script:
- xcodebuild -scheme $SCHEME clean build test
Per i progetti iOS, .travis.yml deve specificare objective-c o swift come linguaggio, la versione di Xcode tramite osx_image e l'installazione delle dipendenze tramite CocoaPods o Swift Package Manager. Travis CI supporta tutte le versioni attuali di Xcode, incluso Xcode 16 con iOS 18 SDK, consentendo di testare le applicazioni sulle ultime API.
Un passo importante è la gestione dei certificati per la firma del codice. Utilizza i file crittografati di Travis CI per memorizzare profili di provisioning e certificati nel repository. Fastlane Match è supportato anche tramite variabili d'ambiente TRAVIS crittografate, semplificando la configurazione della firma per build AdHoc e App Store.
# .travis.yml per applicazione iOS con Fastlane
language: swift
os: osx
osx_image: xcode15.2
branches:
only:
- main
- /\d+\.\d+\.\d+/
before_install:
- gem install cocoapods
- gem install fastlane
install:
- pod install --repo-update
script:
- fastlane scan
- fastlane gym
Per progetti con test UI su XCTest, utilizza la chiave destinations in xcodebuild per specificare il simulatore. Travis CI supporta l'esecuzione di simulatori iOS su immagini macOS senza configurazione aggiuntiva — il simulatore si avvia automaticamente quando si esegue il comando di test xcodebuild test.
Per i progetti Android, .travis.yml viene configurato con il linguaggio android e i componenti SDK specificati tramite la chiave android. Travis CI fornisce immagini Linux con Java JDK 17 preinstallato, Gradle e Android SDK di base. Livelli API aggiuntivi e build-tools vengono installati tramite sdkmanager nella fase before_install.
Un'ottimizzazione chiave per le build Android è la memorizzazione nella cache delle directory .gradle e .m2. Travis CI supporta la cache tramite la chiave cache, riducendo il tempo di installazione delle dipendenze da 120 secondi a 10–15 secondi nelle build successive. Specifica i percorsi della cache per Gradle wrapper e Android Gradle Plugin.
# .travis.yml per applicazione Android
language: android
dist: jammy
jdk: oraclejdk17
android:
components:
- tools
- platform-tools
- build-tools-34.0.0
- android-34
- extra-google-m2repository
before_script:
- yes | sdkmanager "platforms;android-34"
script:
- ./gradlew assembleDebug testDebugUnitTest
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
Per eseguire test strumentati su un emulatore Android, aggiungi una fase before_script con avvio dell'emulatore e attesa di prontezza. Travis CI supporta l'accelerazione hardware KVM sulle immagini Linux, accelerando significativamente l'esecuzione dei test UI rispetto all'emulazione software.
Travis CI si integra con GitHub e Bitbucket tramite un'applicazione OAuth che aggiunge un webhook al repository per la notifica automatica di nuovi commit. Dopo aver attivato il repository in Travis CI, tutti i push e le Pull Request attivano automaticamente un build, e lo stato (passed, failed, pending) viene visualizzato nell'interfaccia di GitHub.
L'integrazione con GitHub Pull Request è una funzionalità chiave di Travis CI. Lo stato del build viene visualizzato direttamente nella PR, bloccando l'unione in caso di test falliti. La configurazione della protezione del branch in GitHub insieme a Travis CI garantisce che solo il codice testato raggiunga il branch principale.
Travis CI supporta variabili d'ambiente crittografate per memorizzare token di App Store Connect, account di servizio Google Play e chiavi di firma. Le variabili vengono crittografate tramite la CLI travis encrypt e aggiunte a .travis.yml, garantendo il trasferimento sicuro dei dati sensibili al build.
I file crittografati di Travis CI consentono di memorizzare profili di provisioning e certificati iOS in un repository GitHub senza rischio di perdite. Il file viene crittografato con il comando travis encrypt-file e decrittografato automaticamente durante la fase before_install. Questo è l'approccio standard per i team che utilizzano Travis CI per la distribuzione di app iOS.
Il principale vantaggio di Travis CI sono i costi infrastrutturali zero. Il team non deve configurare un server, installare software CI/CD o monitorarne la disponibilità. Tutta la gestione si riduce alla modifica di .travis.yml nel repository. Il piano gratuito per repository pubblici rende Travis CI una scelta popolare per progetti mobili Open Source.
Il limite di Travis CI è il limite di tempo di build e di lavori paralleli nei piani tariffari. Per team con alta frequenza di commit (20+ al giorno) e lunghi test di integrazione, i costi dei minuti cloud possono superare il costo di mantenimento di un server Jenkins dedicato. Travis CI inoltre non supporta immagini Docker personalizzate nel piano gratuito.
Per lo sviluppo mobile, Travis CI è adatto a team che utilizzano GitHub, hanno meno di 10 sviluppatori e non richiedono infrastruttura di build personalizzata. Per progetti Enterprise con requisiti di conformità o necessità di compilare su macchine macOS personalizzate, Jenkins rimane una soluzione più flessibile.
Domande frequenti
Travis CI è una piattaforma CI/CD cloud per automatizzare la creazione, il test e il deploy di applicazioni mobili. Il servizio si integra con GitHub e Bitbucket, attivando build a ogni push e visualizzando lo stato nelle Pull Request per il controllo qualità del codice.
Travis CI è un servizio cloud senza necessità di gestione server, configurato tramite .travis.yml. Jenkins è un server auto-ospitato con controllo completo dell'infrastruttura e un sistema di plugin. Travis CI è più semplice da configurare, Jenkins è più flessibile per scenari aziendali complessi.
Specifica language: swift, la versione di Xcode tramite osx_image, installa CocoaPods e Fastlane in before_install. In script, aggiungi i comandi fastlane scan per i test e fastlane gym per il build. Crittografa i certificati usando travis encrypt-file per la conservazione sicura nel repository.
Specifica language: android, JDK 17 e componenti Android SDK tramite la chiave android. Aggiungi la cache delle directory .gradle tramite cache. In script, esegui attività Gradle: ./gradlew assembleDebug e testDebugUnitTest. Per i test UI, configura l'avvio dell'emulatore in before_script.
Sì, Travis CI è adatto a progetti commerciali di piccole e medie dimensioni. I piani a pagamento includono build parallele, repository privati e supporto prioritario. Per Enterprise con requisiti di conformità, si consiglia Jenkins o GitLab CI con infrastruttura dedicata.
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