Best practice per la distribuzione di app Apple ai tester QA utilizzando CI/CD e Fastlane

Questo documento introduce le best practice per l'utilizzo di Firebase App Distribution e fastlane per rendere i flussi di lavoro di test pre-release della piattaforma Apple sostenibili e ripetibili in un ambiente CI/CD. Sebbene questo documento si concentri su fastlane, descriviamo anche le soluzioni disponibili tramite la console Firebase, l'interfaccia a riga di comando Firebase e l'API Firebase App Distribution pubblica per offrirti maggiore flessibilità. Descriviamo anche i limiti di release e tester in modo che tu possa pianificare in anticipo un'esperienza ottimale.

Se utilizzi anche Android, consulta Best practice per la distribuzione di app per Android ai tester QA utilizzando CI/CD.

Prima di iniziare

Prima di implementare le best practice descritte in questo documento, assicurati di attivare App Distribution nella console Firebase per ogni app. Se non hai attivato App Distribution, riceverai un errore 404.

Per attivare App Distribution:

  1. Apri la pagina App Distribution nella console Firebase.

  2. Seleziona la tua app per iOS.

  3. Fai clic su Get Started.

Automatizzare il workflow di test pre-release utilizzando CI/CD

Se vuoi automatizzare la creazione e il rilascio di app per i tuoi tester e utilizzi CI/CD, ti consigliamo di utilizzare fastlane. Un'altra opzione è utilizzare l'interfaccia a riga di comando Firebase, che ti consente di accedere a una vasta gamma di prodotti Firebase.

Utilizzare fastlane

Integra App Distribution nella tua pipeline CI/CD utilizzando fastlane, uno strumento open source che automatizza la creazione e il rilascio di app per iOS e Android. Creando e distribuendo automaticamente le ultime release ai tester, ti assicuri che questi ultimi abbiano sempre la versione di test più aggiornata della tua app.

Per scoprire come integrare App Distribution con fastlane, consulta l'articolo Distribuire app per iOS ai tester utilizzando fastlane. Consulta anche un codelab che illustra la procedura di integrazione di fastlane.

Utilizza l'interfaccia a riga di comando Firebase

Utilizza gli strumenti CLI Firebase forniti da App Distribution per distribuire le build ai tester in modo programmatico. Puoi specificare i tester e le note di rilascio per una build.

Distribuisci l'ultima build iOS test.ipa specificando l'ID app Firebase dell'app e, facoltativamente, aggiungendo una nota di rilascio e un file contenente gli indirizzi email dei tester:

firebase appdistribution:distribute test.ipa  \
    --app 1:1234567890:ios:0a1b2c3d4e5f67890  \
    --release-notes "Bug fixes and improvements" --testers-file testers.txt

Per saperne di più sull'utilizzo della CLI Firebase per automatizzare le build, consulta Distribuire app per iOS ai tester utilizzando la CLI Firebase.

Utilizzare le credenziali di servizio per l'autenticazione

Utilizza il App Distribution plug-in fastlane o l'interfaccia a riga di comando Firebase con i service account, che sfruttano le credenziali predefinite dell'applicazione e ti aiutano a gestire l'integrazione continua. Un service account è un tipo di Account Google che rappresenta le applicazioni anziché gli utenti. Il sistema di integrazione continua può utilizzare i service account per eseguire i carichi di lavoro App Distribution. Per saperne di più, consulta Autenticarsi con un service account.

Se utilizzi la federazione delle identità per i carichi di lavoro, puoi generare e utilizzare un file di configurazione delle credenziali anziché una chiave del service account.

Tieni presente i limiti di release

App Distribution supporta un massimo di 1000 release per app. Ciò significa che quando superi il limite di release, App Distribution elimina automaticamente le release meno recenti che superano il limite. Per scoprire come gestire i limiti di rilascio, consulta Per quanto tempo sono disponibili le release delle app?

Aggiungere lo stesso insieme di tester a più release

Se vuoi aggiungere un numero elevato di tester alle tue release, utilizza la funzionalità di gestione collettiva dei tester di App Distribution.

Ti consigliamo di utilizzare i gruppi per aggiungere gli stessi tester a più release. Un gruppo funge da elenco di controllo dell'accesso. Quando rimuovi un tester da un gruppo, perde l'accesso a tutte le release distribuite a quel gruppo. Per saperne di più, vedi Aggiungere e rimuovere tester da un gruppo.

Se hai molti tester da gestire, puoi aggiungere ed eliminare tester in blocco utilizzando la console Firebase. Per automatizzare l'aggiunta e la rimozione dei tester, utilizza Firebase CLI, fastlane o l'API Firebase App Distribution pubblica.

Tieni presente i limiti dei tester

App Distribution limita il numero di tester che puoi aggiungere a un progetto Firebase o a un gruppo App Distribution. Se superi questi limiti, non potrai distribuire la tua app ad altri tester. Per scoprire di più sui limiti dei tester, consulta Esistono limiti per l'aggiunta di tester alla mia app?

Gestire e aggiungere automaticamente nuovi dispositivi tester iOS

Per aiutarti a registrare altri dispositivi tester iOS, App Distribution ti aiuta a gestire i tuoi dispositivi tester iOS nell'Apple Developer Portal informandoti sui nuovi dispositivi tester iOS tramite email o file CSV. Per saperne di più, vedi Importare i tester da file CSV. Puoi anche esportare nuovi dispositivi a livello di programmazione utilizzando fastlane.

Per scoprire come configurare un'azione fastlane che scarica automaticamente gli UDID, li aggiunge alla console per sviluppatori Apple, quindi ricompila l'app e la distribuisce, consulta Distribuire più rapidamente le build pre-release di iOS con App Distribution e fastlane.

Consentire ai potenziali tester di registrarsi autonomamente per i test

Per semplificare la distribuzione dell'app a più tester, ti consigliamo di utilizzare i link di invito. Un link di invito è un URL univoco che consente ai tester di inserire i propri indirizzi email per registrarsi e testare un'app. Consentire agli utenti di aggiungersi all'elenco dei tester dell'app è un modo semplice per aumentare la base di test interni.

I casi d'uso dei link di invito includono i programmi dogfood aziendali, le organizzazioni con team di controllo qualità di grandi dimensioni e i gruppi di sviluppatori che vogliono che i singoli clienti possano controllare l'accesso dei tester.

Ti consigliamo di creare un link di invito per un gruppo. Qualsiasi tester che si registra utilizzando il link di invito viene aggiunto automaticamente alle release successive.

Per saperne di più, vedi Creare link di invito e Aggiungere e rimuovere tester da un gruppo.

Assicurati che i tester stiano testando la versione che ti interessa

Quando viene caricata una nuova versione, i tester ricevono una notifica via email. Per integrare questa notifica, puoi utilizzare le seguenti funzionalità: link delle release e avvisi in-app. In questo modo, i tester eseguiranno il test della versione specifica dell'app che ti interessa:

  • Link alle release:utilizza questa funzionalità quando vuoi condividere una versione specifica con i tester. Per scoprire come utilizzare i link di rilascio, consulta Distribuire app per iOS ai tester utilizzando la console Firebase. Questi link sono disponibili anche con i nostri strumenti a riga di comando (CLI) Firebase e fastlane da utilizzare con gli strumenti di automazione della build.

  • Avvisi in-app:utilizza questi avvisi quando vuoi assicurarti che i tuoi tester stiano testando l'ultima versione della tua app. Integrando l'App DistributionSDK Firebase per iOS, puoi mostrare avvisi direttamente all'interno dell'app ai tuoi tester quando sono disponibili nuove build dell'app. Per scoprire come aggiungere avvisi in-app, consulta Notificare ai tester le nuove build.

Rimuovere automaticamente l'accesso per i tester che lasciano l'azienda

Una volta che il flusso di test interni CI/CD è attivo e funzionante, devi assicurarti che le persone che lasciano l'azienda non abbiano più accesso alle tue build interne. Per aiutarti a gestire l'accesso dei tester alle build, App Distribution offre le seguenti opzioni: