Photo par JOHN TOWNER

Configurer Azure DevOps pour distribuer votre application iOS sur l'App Store

Uploader votre application facilement!

Créé par Damien Aicheh le 27/10/2021 · 5 mins

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.

Créer l’accès à l’API Key

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 :

Keys tab

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 :

API Keys

Lorsque la clé API sera générée, vous pourrez télécharger un fichier .p8 :

Download API Keys

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.

Récupérer les autres identifiants

Il nous faut maintenant récupérer quelques identifiants pour pouvoir configurer correctement notre connexion :

  • Sur la ligne de l’API Key que vous venez de créer vous pouvez obtenir l’identifiant KEY ID
  • En haut de l’onglet Keys, vous trouverez l’Issuer ID :

Issuer Id

  • Enfin sur l’App Store dans la rubrique Informations de votre application il vous faut l’Appl Id:

Apple Id

Nous sommes officiellement prêts à installer notre pipeline !

Utiliser la Task d’App Store Release

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.

Touche finale

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!

N'hésitez pas à me suivre sur pour ne pas rater mon prochain tutoriel !