Ecco la traduzione del testo in italiano:
Continuous Delivery per iOS utilizzando Fastlane e GitHub Actions e certificato
Prerequisiti
Prima di continuare con il tutorial…
- Assicurati di avere Fastlane installato sulla tua macchina di sviluppo
- Iscrizione al programma per sviluppatori iOS
- Voglia di leggere 😆…
Importante riguardo al prezzo
https://githubcom/features/actions
Il servizio è ‘gratuito’ fino al limite, a seconda della macchina scelta. Utilizzeremo una macchina macOS, puoi vedere nello screenshot il suo prezzo e i limiti (prezzi al momento della creazione del tutorial, potrebbero subire modifiche in futuro)
🔴 Una volta avvertiti dei requisiti e dei prezzi, se ti va, continuiamo…
📣 Nel post assumiamo di avere l’app creata in iTunes Connect, di avere i certificati dell’ecosistema Apple, tutto sarà copiato da Fastlane!
Passiamo al sodo 🧑🏽💻
Passaggi da seguire nel post
- Utilizzo dell’API App Store Connect con Fastlane
- Requisiti
- Creazione di una chiave API App Store Connect
- Utilizzo di una chiave API App Store Connect
- Copia dei file Fastlane
- Configurazione di GitHub Actions
1. Utilizzo dell’API App Store Connect con Fastlane
A partire da febbraio 2021, l’autenticazione a due fattori o la verifica in due passaggi è richiesta per tutti gli utenti per accedere ad App Store Connect. Questo livello di sicurezza aggiuntivo per il tuo ID Apple aiuta a garantire che solo tu possa accedere al tuo account. Da Apple Support
Requisiti
Per poter utilizzare l’API App Store Connect, Fastlane necessita di tre cose:
- ID emittente
- ID chiave
- File chiave o contenuto chiave
Creazione di una chiave API App Store Connect
Per generare le chiavi, devi avere l’autorizzazione di Amministratore in App Store Connect. Se non hai tale autorizzazione, puoi indirizzare la persona pertinente a questo articolo e seguire le seguenti istruzioni.
1 — Accedi a App Store Connect
2 — Seleziona Utenti e accesso
3 — Seleziona la scheda Chiavi API
4 — Fai clic su Genera chiave API o sul pulsante Aggiungi (+)
5 — Inserisci un nome per la chiave. Il nome è solo per tuo riferimento e non fa parte della chiave stessa.
6 — In Accesso, seleziona il ruolo per la chiave. I ruoli che si applicano alle chiavi sono gli stessi ruoli che si applicano agli utenti del tuo team. Vedi autorizzazioni dei ruoli Consigliamo di selezionare Gestione app
7 — Fai clic su Genera
L’accesso di una chiave API non può essere limitato a specifiche app
Il nome della nuova chiave, l’ID chiave, un link per il download e altre informazioni appaiono sulla pagina.
Puoi ottenere tutte e tre le informazioni necessarie qui. <1> ID emittente <2> ID chiave <3> Fai clic su “Scarica chiave API” per scaricare la tua chiave privata API. Il link per il download appare solo se la chiave privata non è ancora stata scaricata. Apple non conserva una copia della chiave privata. Quindi, puoi scaricarla solo una volta.
🔴 Conserva la tua chiave privata in un luogo sicuro. Non dovresti mai condividere le tue chiavi, memorizzarle in un repository di codice o includerle nel codice lato client.
Utilizzo di una chiave API App Store Connect
Il file della chiave API (file p8 che scarichi), l’ID chiave e l’ID emittente sono necessari per creare il token JWT per l’autorizzazione. Ci sono diversi modi in cui queste informazioni possono essere inserite in Fastlane utilizzando la nuova azione di Fastlane, app_store_connect_api_key
. Puoi conoscere altri modi nella documentazione di FastlaneMostro questo metodo perché penso sia il modo più facile per lavorare con la maggior parte dei CI là fuori, dove è possibile impostare variabili d’ambiente
Ora possiamo gestire Fastlane con la chiave API di App Store Connect, ottimo!
Creare certificati e profili di provisioning
Certificati
Apri XCode e vai su Impostazioni > Account > Apple ID > Team e seleziona il tuo team
Clicca su Gestisci certificati > + e seleziona Distribuzione Apple
Quindi puoi creare un nuovo certificato
Poi devi andare nel portachiavi per scaricare il certificato come file p12
Per farlo, devi andare nel portachiavi, passare al portachiavi login e poi alla scheda I miei certificati
Quindi puoi selezionare il certificato che vuoi scaricare (Cerca per la data del certificato)
E poi fai clic destro sul certificato e seleziona Esporta
Scegli il formato file Scambio di informazioni personali (p12)
Questo scaricherà il certificato come file p12
Profili di provisioning
Apri Apple Developer e seleziona il team giusto
Quindi crea un nuovo profilo, cliccando su +
E seleziona App Store Connect
Poi devi selezionare l’app giusta, fai attenzione a non usare il jolly altrimenti la firma fallirà
Seleziona il certificato giusto che hai creato prima (cerca la data di scadenza, dovrebbe essere lo stesso giorno e mese di oggi) e clicca su Continua
Infine inserisci il nome del profilo e clicca su Genera
Il nome sarà usato per identificare il profilo in Fastlane, sotto il valore di
APPLE_PROFILE_NAME
Puoi scaricare il profilo come file mobileprovision
Creazione di segreti GitHub per il tuo certificato e profilo di provisioning
Il processo di firma implica l’archiviazione di certificati e profili di provisioning, il loro trasferimento al runner, l’importazione nel portachiavi del runner e il loro utilizzo nella tua build
Crea segreti nel tuo repository o organizzazione per i seguenti elementi:
-
Il tuo certificato di firma Apple
-
Questo è il tuo file certificato
p12
Per ulteriori informazioni sull’esportazione del tuo certificato di firma da Xcode, consulta la documentazione di Xcode -
Dovresti convertire il tuo certificato in Base64 quando lo salvi come segreto In questo esempio, il segreto è chiamato
BUILD_CERTIFICATE_BASE64
-
Usa il seguente comando per convertire il tuo certificato in Base64 e copiarlo negli appunti:
-
-
La password per il tuo certificato di firma Apple
- In questo esempio, il segreto è chiamato
P12_PASSWORD
- In questo esempio, il segreto è chiamato
-
Il tuo profilo di provisioning Apple
-
Per ulteriori informazioni sull’esportazione del tuo profilo di provisioning da Xcode, consulta la documentazione di Xcode
-
Dovresti convertire il tuo profilo di provisioning in Base64 quando lo salvi come segreto In questo esempio, il segreto è chiamato
BUILD_PROVISION_PROFILE_BASE64
-
Usa il seguente comando per convertire il tuo profilo di provisioning in Base64 e copiarlo negli appunti:
-
2\ Copia i file di Fastlane
Fastlane è una libreria Ruby creata per automatizzare i compiti comuni di sviluppo mobile Usando Fastlane, puoi configurare “corsie” personalizzate che raggruppano una serie di “azioni” che eseguono compiti che normalmente eseguiresti utilizzando Android Studio Puoi fare molto con Fastlane, ma ai fini di questo tutorial, useremo solo una manciata di azioni principaliCrea una cartella Fastlane alla radice del tuo progetto e copia i seguenti file: Fastfile
Elaborazione della build
In GitHub Actions, vieni addebitato in base ai minuti che hai utilizzato per eseguire il tuo flusso di lavoro CI/CD. Per esperienza, ci vogliono circa 10-15 minuti prima che una build possa essere elaborata in App Store Connect.
Per i progetti privati, il costo stimato per build può arrivare fino a $0,08/min x 15 min = $1,2, o più, a seconda della configurazione o delle dipendenze del tuo progetto.
Se condividi le stesse preoccupazioni per il prezzo come me per i progetti privati, puoi mantenere skip_waiting_for_build_processing
su true
.
Qual è il rovescio della medaglia? Devi aggiornare manualmente la conformità della tua app in App Store Connect dopo che la build è stata elaborata, per poter distribuire la build ai tuoi utenti.
Questo è solo un parametro opzionale da aggiornare se vuoi risparmiare sui minuti di build per i progetti privati. Per i progetti gratuiti, questo non dovrebbe essere affatto un problema. Vedi prezzi
3. Configura GitHub Actions
Configura i segreti di GitHub
Ti sei mai chiesto da dove provengono i valori dell’ENV
? Bene, non è più un segreto - provengono dal segreto del tuo progetto 🤦
-
APP_STORE_CONNECT_TEAM_ID
- l’ID del tuo team App Store Connect se fai parte di più team -
PROVISIONING_PROFILE_SPECIFIER
-match AppStore <YOUR_APP_BUNDLE_IDENTIFIER>
, ad esempiomatch AppStore com.domain.blabla.demo
-
BUILD_CERTIFICATE_BASE64
- Certificato codificato in Base64 -
BUILD_PROVISION_PROFILE_BASE64
- Profilo di provisioning codificato in Base64 -
BUNDLE_IDENTIFIER
- l’identificatore del bundle della tua app -
APPLE_KEY_ID
— Chiave API di App Store Connect 🔺Key ID -
APPLE_ISSUER_ID
— Chiave API di App Store Connect 🔺Issuer ID -
APPLE_KEY_CONTENT
— Chiave API di App Store Connect 🔺 Contenuto della chiave p8, controllalo
4. Configura il file di workflow di GitHub
Crea una directory di workflow GitHub
All’interno della cartella workflow
, crea un file chiamato build-upload-ios.yml
e aggiungi quanto segue
Questo workflow dovrebbe essere attivato dopo ogni tag di GitHub, se hai bisogno di automatizzare il tag, fai riferimento prima a Build e rilascio automatico con GitHub actions
Quindi questo workflow estrarrà le tue dipendenze NodeJS, le installerà e costruirà la tua app JavaScript
Ogni volta che invii un nuovo commit, verrà costruito un rilascio in TestFlight
La tua App non ha bisogno di utilizzare Ionic, è obbligatoria solo la base di Capacitor, può avere vecchi moduli Cordova, ma dovrebbero essere preferiti i plugin JS di Capacitor
5. Attiva il workflow
Crea un Commit
Fai un commit, dovresti vedere il workflow attivo nel repository
Attiva il workflow
Invia i nuovi commit al ramo main
o development
per attivare il workflow
Dopo pochi minuti, la build dovrebbe essere disponibile nella tua dashboard di App Store Connect
Si può distribuire dalla macchina locale?
Sì, puoi, ed è molto semplice
Puoi usare Xcode per costruire e firmare la tua app, come sempre
Ringraziamenti
Questo blog si basa sui seguenti articoli: