Skip to main content
Devin può archiviare un’app iOS, firmarla, caricarla su TestFlight e aggiungere la build a un beta group. Esegue xcodebuild su una VM macOS e si autentica con una API key di App Store Connect che memorizzi come secrets di Devin. Prima che Devin possa caricare una build, devi:
  1. Configurare la tua app in App Store Connect.
  2. Creare una API key di App Store Connect.
  3. Aggiungere la key e il tuo Team ID a Devin come secrets.
  4. Assicurarti che Devin possa raggiungere i server di Apple.
Il caricamento su TestFlight richiede sessioni macOS. Se utilizzi una distribuzione Dedicated SaaS, contatta il tuo account team per abilitare le VM macOS.

Requisiti

Configurare App Store Connect

Esegui questi passaggi nel portale Apple Developer e in App Store Connect. Devin non può eseguirli al posto tuo: la maggior parte richiede un Account Holder o un Admin e alcuni richiedono l’autenticazione a due fattori sull’Apple Account di una persona.
1

Accetta i contratti più recenti

L’Account Holder accede a App Store Connect e accetta eventuali contratti in sospeso nella sezione Business. Gli upload non riescono finché un contratto richiesto resta in sospeso.
2

Registra il bundle ID

Nel portale Apple Developer, vai su Certificates, Identifiers & Profiles → Identifiers e registra un App ID corrispondente al bundle ID del target della tua app. Salta questo passaggio se l’identificatore esiste già.
3

Crea il record dell'app

In App Store Connect, vai su Apps, fai clic su + e seleziona New App. Scegli la piattaforma, il nome, la lingua principale, il bundle ID del passaggio precedente e uno SKU. Gli upload su TestFlight non riescono se per quel bundle ID non esiste alcun record dell’app.
4

Crea un beta group

Apri l’app, vai su TestFlight e crea un gruppo:
  • Internal testing: i tester devono essere utenti del tuo team di App Store Connect. Le build sono disponibili non appena termina l’elaborazione.
  • External testing: i tester possono essere chiunque disponga di un indirizzo email o di un collegamento pubblico. Compila prima le Test Information (descrizione della beta app, email per il feedback e contatti per il review). La prima build di ogni versione passa per la Beta App Review.
5

Rispondi alla conformità all'esportazione

Ogni build deve rispondere alla domanda sulla conformità all’esportazione prima che i tester possano installarla. Per evitare di rispondere alla domanda a ogni build, imposta ITSAppUsesNonExemptEncryption nel file Info.plist della tua app. Impostalo su NO se l’app usa solo crittografia esente, come HTTPS.

Creare una API key di App Store Connect

Devin si autentica con una API key di App Store Connect, non con un Apple Account. La key non richiede l’autenticazione a due fattori.
1

Abilitare l'accesso alle API

In App Store Connect, vai su Users and Access → Integrations → App Store Connect API. Se l’accesso alle API non è ancora abilitato, l’Account Holder deve fare clic su Request Access e accettare i termini.
2

Generare una team key

In Team Keys, fai clic su +. Inserisci un nome, ad esempio Devin TestFlight, e seleziona il ruolo App Manager. Per generare una key è necessario il ruolo Admin. Se Xcode non riesce a creare un certificato di distribuzione con una key App Manager, genera una key con il ruolo Admin.
3

Scaricare la chiave privata

Fai clic su Download accanto alla nuova key per salvare AuthKey_<KEY_ID>.p8. Apple consente di scaricare il file una sola volta: se lo perdi, revoca la key e generane una nuova.
4

Copiare l'Issuer ID e il Key ID

L’Issuer ID è indicato sopra la tabella delle key, mentre il Key ID si trova nella riga della key.
5

Trovare il tuo Team ID

Nel portale Apple Developer, vai su Membership details e copia il Team ID: è una stringa di 10 caratteri, ad esempio A1B2C3D4E5.
Chiunque disponga del file .p8 può caricare build e gestire TestFlight per tutte le app del tuo team. Conservalo esclusivamente nei secrets di Devin e non committarlo in un repository.

Aggiungere secrets a Devin

Aggiungi i seguenti valori come secrets non elaborati nella Secrets page: Per copiare la chiave privata su Mac, esegui:
Scegli un ambito per i secret:
  • Organization: tutte le sessioni della tua organizzazione possono usare la chiave. Usa questo ambito quando il team rilascia build con Devin.
  • Personal: solo le sessioni che avvii tu possono usare la chiave.
I secret sono disponibili solo nelle sessioni avviate dopo la loro aggiunta. Per maggiori informazioni sugli ambiti, consulta Secrets.

Consentire l’accesso alla rete

La VM macOS di Devin deve poter raggiungere i server Apple per firmare e caricare le build. Se la tua organizzazione applica una network policy restrittiva, aggiungi api.appstoreconnect.apple.com e gli altri host Apple utilizzati da xcodebuild per la firma e il caricamento. Consentire *.apple.com è sufficiente a coprirli tutti. Un host bloccato si manifesta di solito come un errore di autenticazione, non come un errore di rete. Consulta Risoluzione dei problemi.

Caricare una build

Avvia una sessione macOS e chiedi a Devin di caricare una build:
Devin usa i secret per effettuare le seguenti operazioni:
  1. Scrive ASC_PRIVATE_KEY in ~/.appstoreconnect/private_keys/AuthKey_$ASC_KEY_ID.p8 con autorizzazioni 0600.
  2. Verifica l’ultimo numero di build tramite l’API di App Store Connect e ne sceglie uno superiore.
  3. Archivia l’app con xcodebuild archive.
  4. Firma e carica la build con xcodebuild -exportArchive.
  5. Attende il completamento dell’elaborazione, quindi aggiunge la build al beta group tramite l’API di App Store Connect.
Il passaggio di esportazione usa un plist di opzioni di esportazione con destination impostato su upload:
E questi comandi:
-allowProvisioningUpdates consente a Xcode di creare il certificato di distribuzione e il provisioning profile con l’API key, così la VM non necessita di avere installati gli asset di firma. Se il tuo repository dispone già di uno script di release, come una lane di fastlane o un target make, chiedi a Devin di usarlo. fastlane accetta la stessa key tramite app_store_connect_api_key.

Salva i passaggi nel tuo blueprint

Per evitare di ripetere le istruzioni in ogni prompt, aggiungile alla sezione knowledge del blueprint del tuo repository:

Troubleshooting

No Accounts with App Store Connect Access o Failed to Use Accounts durante l’esportazione. Verifica innanzitutto l’accesso alla rete. Se la VM non riesce a raggiungere i server Apple, xcodebuild segnala questo errore anche quando la chiave è valida. Cerca ITunesConnectFoundationErrorDomain Code=-1003 nelle righe precedenti. Se la rete funziona correttamente, verifica che la chiave abbia il ruolo App Manager. No profiles for '<bundle ID>' were found. Il bundle ID non è registrato per il team indicato in APPLE_TEAM_ID, oppure non esiste un record dell’app corrispondente in App Store Connect. The provided entity includes an attribute with a value that has already been used. Il numero di build è già stato usato per questa versione. Ripeti l’upload con un numero di build superiore. La build viene caricata ma i tester non riescono a installarla. Controlla la build in App Store Connect → TestFlight. Potrebbe essere ancora in elaborazione, mancare delle informazioni sulla conformità all’esportazione oppure essere in attesa della Beta App Review. Xcode non riesce a creare un certificato di distribuzione. Il ruolo della chiave non consente di gestire i certificati. Genera una chiave con il ruolo Admin oppure chiedi a un Admin di creare il certificato di distribuzione nel portale Apple Developer. Le variabili d’ambiente sono vuote nella sessione. I secret sono disponibili solo nelle sessioni avviate dopo averli aggiunti. Avvia una nuova sessione.