xcodebuild sur une VM macOS et s’authentifie à l’aide d’une API key App Store Connect que vous stockez sous forme de secrets Devin.
Avant que Devin puisse téléverser un build, vous devez :
- Configurer votre application dans App Store Connect.
- Créer une API key App Store Connect.
- Ajouter la clé et votre Team ID à Devin sous forme de secrets.
- Vérifier que Devin peut joindre les serveurs d’Apple.
Le téléversement vers TestFlight nécessite des sessions macOS. Si vous utilisez un déploiement Dedicated SaaS, contactez votre account team pour activer les VM macOS.
Prérequis
Configurer App Store Connect
1
Accepter les derniers contrats
L’Account Holder se connecte à App Store Connect et accepte les contrats en attente dans Business. Les téléversements échouent tant qu’un contrat requis reste en attente.
2
Enregistrer le bundle ID
Dans le portail Apple Developer, allez dans Certificates, Identifiers & Profiles → Identifiers et enregistrez un App ID correspondant au bundle ID de la cible de votre application. Ignorez cette étape si l’identifiant existe déjà.
3
Créer la fiche de l'application
Dans App Store Connect, allez dans Apps, cliquez sur +, puis sélectionnez New App. Choisissez la plateforme, le nom, la langue principale, le bundle ID de l’étape précédente et un SKU. Les téléversements TestFlight échouent si aucune fiche d’application n’existe pour ce bundle ID.
4
Créer un beta group
Ouvrez l’application, allez dans TestFlight et créez un groupe :
- Internal testing : les testeurs doivent être des utilisateurs de votre équipe App Store Connect. Les builds sont disponibles dès la fin du traitement.
- External testing : les testeurs peuvent être n’importe quelle personne disposant d’une adresse e-mail ou d’un lien public. Renseignez d’abord les Test Information (description de l’application bêta, e-mail de retour et coordonnées du contact de review). Le premier build de chaque version passe par la Beta App Review.
5
Répondre à la conformité à l'exportation
Chaque build doit répondre à la question de conformité à l’exportation avant que les testeurs puissent l’installer. Pour éviter cette question à chaque build, définissez
ITSAppUsesNonExemptEncryption dans le fichier Info.plist de votre application. Réglez-le sur NO si l’application n’utilise que du chiffrement exempté, comme HTTPS.Créer une API key App Store Connect
1
Activer l'accès à l'API
Dans App Store Connect, rendez-vous dans Users and Access → Integrations → App Store Connect API. Si l’accès à l’API n’est pas encore activé, l’Account Holder doit cliquer sur Request Access et accepter les conditions.
2
Générer une clé d'équipe
Sous Team Keys, cliquez sur +. Saisissez un nom, par exemple
Devin TestFlight, puis sélectionnez le rôle App Manager. Le rôle Admin est requis pour générer une clé. Si Xcode ne parvient pas à créer un certificat de distribution avec une clé App Manager, générez plutôt une clé avec le rôle Admin.3
Télécharger la clé privée
Cliquez sur Download à côté de la nouvelle clé pour enregistrer
AuthKey_<KEY_ID>.p8. Apple n’autorise qu’un seul téléchargement de ce fichier. Si vous le perdez, révoquez la clé et générez-en une nouvelle.4
Copier l'Issuer ID et le Key ID
L’Issuer ID s’affiche au-dessus du tableau des clés. Le Key ID figure sur la ligne de la clé.
5
Trouver votre Team ID
Dans le portail Apple Developer, ouvrez Membership details et copiez le Team ID. Il s’agit d’une chaîne de 10 caractères, par exemple
A1B2C3D4E5.Ajouter des secrets à Devin
Pour copier la clé privée sur un Mac, exécutez :
- Organization : toutes les sessions de votre organisation peuvent utiliser la clé. Utilisez ce périmètre lorsque la Team livre des builds avec Devin.
- Personal : seules les sessions que vous lancez peuvent utiliser la clé.
Autoriser l’accès réseau
api.appstoreconnect.apple.com ainsi que les autres hôtes Apple utilisés par xcodebuild pour la signature et les téléversements. Autoriser *.apple.com suffit à tous les couvrir.
Un hôte bloqué se manifeste généralement par une erreur d’authentification, et non par une erreur réseau. Consultez la section Dépannage.
Téléverser un build
- Écrire
ASC_PRIVATE_KEYdans~/.appstoreconnect/private_keys/AuthKey_$ASC_KEY_ID.p8avec les autorisations0600. - Vérifier le dernier numéro de build via l’API App Store Connect et en choisir un plus élevé.
- Archiver l’application avec
xcodebuild archive. - Signer et téléverser le build avec
xcodebuild -exportArchive. - Attendre la fin du traitement, puis ajouter le build au beta group via l’API App Store Connect.
destination est défini sur upload :
-allowProvisioningUpdates permet à Xcode de créer le certificat de distribution et le profil de provisioning à l’aide de l’API key : la VM n’a donc pas besoin que les ressources de signature y soient installées.
Si votre repository dispose déjà d’un script de release, comme une lane fastlane ou une cible make, demandez à Devin de l’utiliser. fastlane accepte la même clé via app_store_connect_api_key.
Enregistrer les étapes dans votre blueprint
knowledge du blueprint de votre repository :
Troubleshooting
No Accounts with App Store Connect Access ou Failed to Use Accounts lors de l’export. Vérifiez d’abord l’accès réseau. Si la VM ne parvient pas à joindre les serveurs d’Apple, xcodebuild signale cette erreur même lorsque la clé est valide. Recherchez ITunesConnectFoundationErrorDomain Code=-1003 dans les lignes qui précèdent. Si le réseau fonctionne, vérifiez que la clé dispose du rôle App Manager.
No profiles for '<bundle ID>' were found. Le bundle ID n’est pas enregistré pour la team indiquée dans APPLE_TEAM_ID, ou aucune fiche d’application ne lui correspond dans App Store Connect.
The provided entity includes an attribute with a value that has already been used. Le numéro de build a déjà été utilisé pour cette version. Téléversez à nouveau avec un numéro de build supérieur.
Le build est téléversé, mais les testeurs ne peuvent pas l’installer. Vérifiez le build dans App Store Connect → TestFlight. Il est peut-être encore en cours de traitement, les informations de conformité à l’exportation manquent peut-être, ou il est en attente de Beta App Review.
Xcode ne parvient pas à créer un certificat de distribution. Le rôle de la clé ne permet pas de gérer les certificats. Générez une clé avec le rôle Admin, ou demandez à un Admin de créer le certificat de distribution dans le portail Apple Developer.
Les variables d’environnement sont vides dans la session. Les secrets ne sont disponibles que dans les sessions démarrées après leur ajout. Démarrez une nouvelle session.
