Pilot (Fastlane) è uno strumento per gestire i build di app iOS in TestFlight: caricamento di file binari, gestione di gruppi di tester e tracciamento dello stato dei build. A differenza del caricamento manuale tramite App Store Connect, Pilot automatizza tutte le operazioni con l'API di TestFlight. Secondo la documentazione ufficiale di Fastlane (2026), Pilot consente ai team di ridurre i tempi di pubblicazione di una versione beta da 10 minuti a pochi secondi.
Punti chiave
Pilot (Fastlane) è un componente dell'ecosistema Fastlane per automatizzare il lavoro con TestFlight — la piattaforma Apple per i test beta di applicazioni mobili. Pilot gestisce tutte le operazioni di routine: caricamento di build, aggiunta di tester, gestione di gruppi e tracciamento dello stato dei build.
Senza Pilot, il processo di distribuzione beta si presenta così: lo sviluppatore apre manualmente App Store Connect, seleziona l'app, carica l'IPA tramite Xcode Organizer, configura un gruppo di tester e invia gli inviti. TestFlight è il servizio Apple per distribuire versioni beta di app ai tester prima del rilascio ufficiale sull'App Store.
Secondo App Store Connect Help (2025), i tester esterni devono passare attraverso il processo Beta App Review prima della prima installazione del build — questo richiede da 1 a 48 ore. Pilot traccia automaticamente lo stato della revisione e notifica il team quando il build è pronto per la distribuzione ai gruppi di tester esterni.
Usa Pilot in qualsiasi progetto che richieda la consegna regolare di build beta ai tester — è uno strumento standard per le pipeline CI/CD iOS, che garantisce un processo di consegna prevedibile.
La funzionalità di Pilot copre l'intero ciclo di vita della gestione dei build beta: dal caricamento di un file binario alla notifica ai tester di una nuova versione. Ogni funzione è implementata come comando separato con comportamento prevedibile e registrazione dettagliata di ogni passaggio.
Il comando fastlane pilot upload carica il file IPA in App Store Connect e crea un nuovo build in TestFlight. Pilot verifica automaticamente la validità del file binario, la conformità della versione e l'identificatore dell'app. App Store Connect è la piattaforma Apple per la gestione delle applicazioni, inclusi caricamento di build, metadati, analisi e report di vendita.
Dopo il caricamento, Pilot attende l'elaborazione del file binario da parte di Apple — il processo richiede da 5 a 30 minuti a seconda della dimensione del build. Durante l'attesa, Pilot mostra una barra di avanzamento con informazioni sullo stato corrente di elaborazione: Processing, Validating o Ready. Dopo l'elaborazione riuscita, il build diventa disponibile per l'assegnazione ai gruppi di tester.
Pilot supporta la gestione sia di gruppi di tester interni che esterni. I tester interni sono membri del tuo team Apple Developer che ottengono l'accesso ai build immediatamente, senza passare attraverso Beta App Review. I tester esterni sono utenti invitati via email, che necessitano dell'approvazione della revisione prima della prima installazione.
Il comando fastlane pilot add aggiunge nuovi tester a un gruppo tramite email o Apple ID. Pilot invia automaticamente gli inviti e verifica se il tester ha accettato l'invito. Per aggiunte in massa, puoi passare un elenco di email da un file utilizzando il parametro --testers_file_path, utile quando si forma inizialmente un gruppo di tester di centinaia di partecipanti.
# Caricare un nuovo build in TestFlight
fastlane pilot upload --ipa "build/MyApp.ipa"
# Aggiungere un tester a un gruppo
fastlane pilot add --email "tester@company.com" \
--groups "QA Team"
La configurazione di Pilot non richiede un file di configurazione separato — le impostazioni vengono passate tramite Appfile (il file comune di Fastlane) o argomenti della riga di comando. I parametri principali includono l'apple_id dell'app, app_identifier, team_id e le credenziali per accedere all'API di App Store Connect.
Per l'autenticazione, Pilot utilizza la chiave API di App Store Connect (metodo consigliato) o l'autenticazione a due fattori di Apple ID. App Store Connect API Key è una chiave di accesso generata in App Store Connect che consente di interagire con l'API senza inserire password e codice di conferma in modo interattivo.
# Appfile — configurazione comune di Fastlane
app_identifier("com.company.app")
apple_id("developer@company.com")
team_id("TEAM123456")
# Variabili d'ambiente per Pilot
# APP_STORE_CONNECT_API_KEY_PATH=/path/to/key.p8
Il parametro app_identifier definisce il Bundle Identifier dell'app, che deve corrispondere all'identificatore specificato nel progetto Xcode e in App Store Connect. Il parametro apple_id viene utilizzato per l'autenticazione nello schema a due fattori, e team_id — per selezionare il team di sviluppo se l'account è collegato a più team Apple Developer.
Per far funzionare Pilot, è necessario configurare la chiave API di App Store Connect nell'ambiente CI/CD. La chiave viene generata in App Store Connect → Users and Access → Keys → Generate API Key. Salva il file .p8 nei segreti del sistema CI e specifica il percorso tramite la variabile d'ambiente APP_STORE_CONNECT_API_KEY_PATH o il parametro --api_key_path nei comandi di Pilot.
L'insieme dei comandi di Pilot copre tutti gli scenari di TestFlight: caricamento di build, gestione dei tester, visualizzazione dello stato e tracciamento dei metadati. Ogni comando restituisce un output JSON strutturato per ulteriori elaborazioni negli script CI/CD.
Il comando fastlane pilot builds mostra un elenco di tutti i build dell'app con versione, stato di elaborazione e data di caricamento. Lo stato del build può essere uno dei seguenti: Processing — Apple sta elaborando il file binario, Ready — il build è disponibile per la distribuzione, Rejected — il build è stato rifiutato a causa di errori di convalida.
# Visualizzare l'elenco di tutti i build in TestFlight
fastlane pilot builds
# Assegnare un build a un gruppo di tester
fastlane pilot distribute --build_number 42 \
--groups "QA Team" --notify
# Visualizzare informazioni su un build specifico
fastlane pilot build_info --build_number 42
Il comando fastlane pilot distribute assegna il build a gruppi di tester specificati e invia notifiche. Il parametro --notify abilita l'invio di notifiche email ai tester riguardo un nuovo build disponibile — questo è fondamentale per coinvolgere i tester beta nel processo di test e accelerare il feedback.
Per gestire i metadati del build, utilizzare il parametro --changelog, che imposta il testo descrittivo delle modifiche nella nuova versione. Questo testo viene mostrato ai tester nell'invito al test nell'app TestFlight. Si consiglia di specificare le modifiche chiave, i bug corretti e le nuove funzionalità in ogni build.
| Comando Pilot | Scopo | Parametri chiave |
|---|---|---|
| pilot upload | Caricare IPA in TestFlight | --ipa, --skip_waiting |
| pilot distribute | Assegnare build ai gruppi | --build_number, --groups |
| pilot add | Aggiungere tester | --email, --groups |
| pilot builds | Elencare tutti i build | --app_identifier |
| pilot build_info | Informazioni sul build | --build_number |
Pilot in CI/CD è la fase finale della pipeline di consegna delle app iOS. Dopo che Gym ha compilato l'IPA e i test sono stati superati, Pilot carica il build in TestFlight e lo distribuisce ai gruppi di tester. Ciò consente ai team QA di ottenere la nuova versione dell'app entro pochi minuti da un commit nel repository.
Una tipica pipeline CI/CD iOS include la sequenza: Match (certificati), Gym (compilazione IPA), Pilot (caricamento in TestFlight e distribuzione). Ogni fase dipende dalla precedente, garantendo che solo build validi e firmati vengano consegnati ai tester.
# Pipeline completa in Fastfile
lane :beta do
match(type: :appstore)
gym(scheme: "MyApp", export_method: "app-store")
pilot("build/MyApp.ipa", groups: ["QA", "PM"])
end
Il parametro skip_waiting nel comando upload consente di non attendere il completamento dell'elaborazione del file binario da parte di Apple all'interno di un'attività CI — Pilot invia la richiesta di caricamento, riceve l'identificatore del build e termina. Questo velocizza la pipeline poiché l'elaborazione può richiedere fino a 30 minuti, che non vengono spesi in attesa nel runner CI.
Affinché Pilot funzioni correttamente in CI, è necessario configurare la chiave API di App Store Connect. Salva il file della chiave .p8 nell'archivio sicuro del sistema CI e passa il percorso tramite la variabile d'ambiente APP_STORE_CONNECT_API_KEY_PATH. Pilot utilizza questa chiave per autenticarsi nell'API senza autenticazione a due fattori, fondamentale per scenari automatizzati.
Quando si utilizza Pilot, gli sviluppatori incontrano più spesso errori di autenticazione, configurazione errata dell'app e problemi con l'elaborazione dei file binari da parte di Apple. La diagnosi dei problemi di Pilot inizia con il controllo dello stato del build in App Store Connect tramite il comando pilot builds.
L'errore “Your app is not available for testing in TestFlight” si verifica quando l'app non è configurata per il test in App Store Connect. Soluzione: apri la sezione TestFlight in App Store Connect, attiva il test per l'app e assicurati che Export Compliance sia compilato correttamente per il tuo tipo di crittografia.
L'errore “Missing iOS Distribution signing identity” indica l'assenza di un certificato di Distribution nel Portachiavi. Soluzione: esegui Match per scaricare il certificato corretto prima di chiamare Pilot. Un certificato di Distribution differisce da quello Development — viene utilizzato per firmare i build destinati alla distribuzione tramite TestFlight o App Store.
Con l'errore “Invalid Provisioning Profile”, il build contiene un profilo errato per il metodo di esportazione selezionato. Soluzione: verifica che Gym utilizzi il corretto export_method corrispondente al tipo di profilo in Match. Se il build è stato compilato con un profilo development, Pilot non sarà in grado di caricarlo in TestFlight — è richiesto un profilo app-store o ad-hoc.
Domande frequenti
Pilot supporta due tipi: tester interni (Internal Testers) — membri del team Apple Developer che ottengono l'accesso immediatamente, e tester esterni (External Testers) — utenti invitati via email che devono superare la Beta App Review prima dell'installazione.
TestFlight richiede un numero di build univoco per ogni caricamento. Pilot verifica automaticamente i duplicati e rifiuta il caricamento di un build con un numero già esistente in App Store Connect. Per un nuovo caricamento, aumenta il build number nel progetto Xcode prima della compilazione.
No, Pilot è un componente di Fastlane e non viene installato separatamente. Tuttavia, puoi chiamare solo Pilot senza altri strumenti Fastlane. Per farlo, installa Fastlane tramite gem install fastlane e utilizza solo i comandi pilot, ignorando match e gym.
Usa il comando fastlane pilot reject con il numero del build specificato. Pilot disabilita l'accesso dei tester al build specificato ma non lo elimina da App Store Connect. Il build rifiutato rimane nella cronologia di TestFlight con stato Rejected per l'audit delle release.
Usa il parametro --notify nel comando pilot distribute. Pilot invia notifiche email a tutti i tester nei gruppi specificati con un link per installare la nuova versione tramite TestFlight. Senza questo flag, i tester vedranno il nuovo build solo aprendo l'app TestFlight.
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