- Azure
- Azure DevOps
- Xamarin
- Xamarin.iOS
- iOS
Lors du développement d’une application pour iOS, vous aurez probablement besoin de la distribuer à vos testeurs ou à vos utilisateurs finaux. Dans ce tutoriel nous découvrirons comment paramétrer votre pipeline pour pouvoir uploader vos packages sur l’App Store depuis Azure DevOps.
Cet article suppose que vous avez déjà buildé et signé un ipa
avec un provisioning profile pour l’App Store afin de l’uploader.
La première chose à faire est de vous connecter à App Store Connect avec le compte propriétaire. Si vous avez les droits appropriés, vous verrez quelque chose comme ceci :
Dans l’onglet Clés, si c’est la première fois, acceptez les termes et créez une API Key. Dans la popup, donnez un nom qui correspond à votre application et donnez-lui un accès App Manager :
Lorsque la clé API sera générée, vous pourrez télécharger un fichier .p8
:
Si vous ne voyez pas le bouton de téléchargement, actualisez simplement votre page une fois.
Attention, vous ne verrez le bouton de téléchargement qu’une seule fois. Vous devez donc enregistrer ce fichier dans un stockage sécurisé comme un Key Vault pour pouvoir le récupérer lorsque vous en aurez besoin. Sinon, vous devrez révoquer l’API Key et la recréer.
Il nous faut maintenant récupérer quelques identifiants pour pouvoir configurer correctement notre connexion :
Nous sommes officiellement prêts à installer notre pipeline !
Dans votre pipeline, vous pouvez maintenant utiliser la task officielle de l’App Store. Si cette task n’est pas déjà installée dans votre organisation, n’hésitez pas à le faire maintenant, sinon vous ne pourrez pas y accéder dans vos pipelines.
Voici un exemple de modèle YAML
qui utilise cette task :
jobs:
- job:
displayName: 'Apple Store'
steps:
- task: DownloadBuildArtifacts@0
displayName: 'Download artifacts'
inputs:
buildType: 'current'
downloadType: 'specific'
downloadPath: 'releases_drop'
- task: AppStoreRelease@1
inputs:
authType: 'ApiKey'
apiKeyId: 'YOUR_KEY_ID'
apiKeyIssuerId: 'YOUR_ISSUER_ID'
apitoken: 'YOUR_API_KEY_ENCODED'
releaseTrack: 'TestFlight'
appIdentifier: 'com.yourcompany.yourapp'
appType: 'iOS'
ipaPath: releases_drop/ios_packages/*.ipa
shouldSkipWaitingForProcessing: true
shouldSkipSubmission: true
appSpecificId: 'YOUR_APPLE_ID'
En supposant que vous ayez déjà votre ipa
d’un précédent job
, nous le téléchargeons à partir d’artefacts et le l’uploadons avec la task AppStoreRelease@1
.
Comme vous pouvez le voir vous disposez des 3 identifiants que nous avons précédemment récupéré :
KEY_ID
ISSUER_ID
APPLE_ID
Concernant l’API_KEY_ENCODED
pour la générer, il suffit d’encoder le contenu du fichier .p8
tel quel. Ne changez pas le format du fichier sinon cela ne fonctionnera pas. Pour convertir votre API Key en base64, placez-la dans un fichier txt
et exécutez l’une des commandes ci-dessous, en fonction de votre système d’exploitation. Vous obtiendrez un fichier contenant la chaîne base64 qui représente votre clé API.
Windows
certutil -encode data.txt tmp.b64 && findstr /v /c:- tmp.b64 > data.b64 && del tmp.b64
Mac
base64 -i data.txt -o data.b64
Ubuntu
base64 data.txt > data.b64
Bien sûr, comme toutes vos informations d’identification, ces clés d’API encodées doivent être enregistrées dans vos variables secrètes dans Azure DevOps.
Lorsque le pipeline sera exécuté, votre ipa
sera uploadé sur TestFlight. Si vous souhaitez l’uploader directement dans un autre environnement (production par exemple), regardez l’option releaseTrack
.
Vous pouvez désormais uploader votre package directement sur l’App Store en un clic ! Cela permettra à tous les membres de votre équipe de le faire de manière sécurisée et autonome.
Happy coding!