Partage via


Générer, tester et déployer des applications Xcode

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Ce guide de démarrage rapide vous montre comment créer et déployer des projets Xcode avec des pipelines YAML dans Azure Pipelines.

Prérequis

  • Une organisation et un projet Azure DevOps où vous avez la permission de créer des pipelines et de déployer des applications.
  • Un projet Xcode 9+ et une application dans un référentiel GitHub. Pour plus d’informations, veuillez consulter la section Créer un projet Xcode pour une application.

Créer le pipeline

Important

Lors des procédures GitHub, il est possible qu’il vous soit demandé de créer une connexion de service GitHub ou que vous soyez redirigé vers GitHub pour vous connecter, installer Azure Pipelines, ou autoriser Azure Pipelines. Suivez les instructions à l’écran pour compléter le processus. Pour plus d’informations, veuillez consulter la section Accès aux référentiels GitHub.

  1. Dans votre projet Azure DevOps, sélectionnez Pipelines>Nouveau pipeline ou Créer un pipeline si ce pipeline est le premier dans le projet.
  2. Sélectionnez GitHub comme emplacement de votre code source.
  3. Sur l’écran Sélectionner un référentiel, sélectionnez le référentiel pour votre projet Xcode.
  4. Sur l’écran Configurer votre pipeline, sélectionnez Xcode.

Azure Pipelines fournit un pipeline de démarrage basé sur le modèle Xcode. Examinez le code dans azure-pipelines.yml.

Environnement de génération

Xcode est préinstallé sur les agents macOS hébergés par Microsoft dans Azure Pipelines, vous n’avez donc pas besoin de configurer d’infrastructure. Pour connaître les versions exactes de Xcode qui sont préinstallées, veuillez consulter la section Logiciels des agents hébergés par Microsoft.

Le nœud pool en haut de votre fichier azure-pipelines.yml sélectionne le pool d’agents approprié.

pool:
  vmImage: 'macOS-latest'

Tâche de build Xcode

La tâche Xcode compile, teste ou archive un espace de travail Xcode sur macOS, et peut éventuellement empaqueter une application. L’étape Xcode dans le fichier de démarrage azure-pipelines.yml compile le projet iOS en utilisant son schéma par défaut, pour le simulateur, et sans empaquetage. Vous pouvez modifier les valeurs et ajouter des paramètres pour correspondre à la configuration de votre projet.

steps:
- task: Xcode@5
  inputs:
    actions: 'build'
    scheme: ''
    sdk: 'iphoneos'
    configuration: 'Release'
    xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
    xcodeVersion: 'default' # Options: 10, 11, 12, 13, 14, default, specifyPath

Enregistrer et exécuter le pipeline

Lorsque vous avez terminé d’examiner le code dans azure-pipelines.yml, sélectionnez Enregistrer et exécuter.

Capture d’écran du bouton Enregistrer et exécuter dans un nouveau pipeline YAML.

Modifiez éventuellement le Commit message et fournissez une description. Ensuite, sélectionnez à nouveau Enregistrer et exécuter pour valider le fichier azure-pipelines.yml dans votre référentiel et démarrer une compilation.

La page d’exécution de la compilation affiche les détails et la progression de la compilation. Si vous voulez voir votre pipeline en action, sélectionnez Tâche dans la partie inférieure de la page.

Vous disposez maintenant d’un pipeline YAML fonctionnel, azure-pipelines.yml, dans votre référentiel, prêt à être personnalisé.

Personnaliser votre pipeline

Pour apporter des modifications à votre pipeline, sélectionnez Modifier sur la page du pipeline. Les sections suivantes décrivent quelques moyens courants de personnaliser votre pipeline Xcode.

Ajouter des tâches de signature et d’approvisionnement

Une application Xcode doit être signée et approvisionnée pour pouvoir être exécutée sur un appareil ou publiée sur l’App Store. Le processus de signature et d’approvisionnement doit accéder à votre certificat de signature P12 et à un ou plusieurs profils d’approvisionnement. Pour plus d’informations, veuillez consulter la section Signer votre application mobile.

Pour rendre le certificat et le profil disponibles pour Xcode pendant une build, ajoutez les tâches Installer le certificat Apple et Installer le profil d’approvisionnement Apple à votre pipeline.

Utiliser une variable d’environnement Carthage

Si votre projet utilise Carthage avec un référentiel Carthage privé, vous pouvez configurer l’authentification en utilisant une variable d’environnement nommée GITHUB_ACCESS_TOKEN avec une valeur d’un jeton ayant accès au référentiel. Carthage détecte automatiquement et utilise cette variable d’environnement.

N’ajoutez pas directement le jeton secret à votre YAML de pipeline. À la place, sélectionnez Variables sur la page du pipeline pour ouvrir le volet Variables et créez une variable pour ce jeton. Assurez-vous d’activer l’icône de verrouillage pour chiffrer la valeur de la variable. Pour plus d’informations, veuillez consulter la section Définir des variables secrètes.

Le code de pipeline suivant utilise une variable secrète nommée myGitHubAccessToken pour la valeur de la variable d’environnement GITHUB_ACCESS_TOKEN.

- script: carthage update --platform iOS
  env:
    GITHUB_ACCESS_TOKEN: $(myGitHubAccessToken)

Tester sur des appareils hébergés par Azure

Pour tester votre application dans un laboratoire hébergé de dispositifs iOS dans le Visual Studio App Center, ajoutez la tâche App Center Test à votre pipeline.

Cette tâche nécessite un compte d’essai gratuit App Center, qui doit être converti en compte payant après 30 jours pour continuer à utiliser le laboratoire de test. Inscrivez-vous pour un compte App Center avant d’utiliser cette tâche.

L’exemple suivant exécute une suite de tests App Center. La tâche utilise une connexion de service que vous devez configurer.

Pour obtenir la syntaxe complète de la tâche et la référence, veuillez consulter la section Tâche Test App Center. Pour plus d’informations, veuillez consulter la section Utiliser Azure DevOps pour les tests UI.

- task: AppCenterTest@1
  inputs:
    appFile: path/myapp.ipa
    artifactsDirectory: '$(Build.ArtifactStagingDirectory)/AppCenterTest'
    frameworkOption: 'appium'
    appiumBuildDirectory: test/upload
    serverEndpoint: 'My App Center service connection'
    appSlug: username/appIdentifier
    devices: 'devicelist'

Conserver les artefacts avec l’enregistrement de build

Pour stocker votre fichier iOS AppStore Package (IPA) avec l’enregistrement de la build ou pour le tester et le déployer dans des pipelines ultérieurs, ajoutez les tâches Copier les fichiers et Publier les artefacts de build à votre pipeline. Pour plus d’informations, veuillez consulter la section Publier et télécharger des artefacts de pipeline.

- task: CopyFiles@2
  inputs:
    contents: '**/*.ipa'
    targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

Déployer sur App Center

Pour distribuer une application à un groupe de testeurs ou d’utilisateurs bêta, ou pour promouvoir l’application vers Intune ou l’Apple App Store, ajoutez la tâche App Center Distribute. La tâche nécessite un compte App Center gratuit qui reste sans frais.

L’exemple suivant distribue une application aux utilisateurs. Pour obtenir la syntaxe complète de la tâche et la référence, veuillez consulter la section Distribution App Center. Pour plus d’informations, veuillez consulter la section Déployer les builds Azure DevOps avec App Center.

- task: AppCenterDistribute@3
  inputs:
    serverEndpoint: 'AppCenter'
    appSlug: '$(APP_CENTER_SLUG)'
    appFile: '$(APP_FILE)' # Relative path from the repo root to the IPA file you want to publish
    symbolsOption: 'Apple'
    releaseNotesOption: 'input'
    releaseNotesInput: 'Here are the release notes for this version.'
    destinationType: 'groups'

Installer l’extension Apple App Store et déployer sur l’Apple App Store

Pour automatiser l’interaction avec l’Apple App Store, installez l’extension Apple App Store, puis utilisez les tâches suivantes dans votre pipeline. Par défaut, ces tâches s’authentifient auprès d’Apple en utilisant une connexion de service que vous devez configurer.

Pour automatiser la publication des mises à jour des applications bêta iOS existantes sur TestFlight ou des applications en production sur l’App Store, ajoutez la tâche App Store Release.

Il existe des limitations à l’utilisation de cette tâche avec l’authentification à deux facteurs d’Apple. L’authentification Apple est spécifique à la région, et les jetons de session fastlane expirent rapidement et doivent être recréés et reconfigurés.

- task: AppStoreRelease@1
  displayName: 'Publish to the App Store TestFlight track'
  inputs:
    serviceEndpoint: 'My Apple App Store service connection' 
    appIdentifier: com.yourorganization.testapplication.etc
    ipaPath: '$(build.artifactstagingdirectory)/**/*.ipa'
    shouldSkipWaitingForProcessing: true
    shouldSkipSubmission: true

Pour automatiser la promotion d’une application précédemment soumise d’iTunes Connect à l’App Store, ajoutez la tâche App Store Promote.

- task: AppStorePromote@1
  displayName: 'Submit to the App Store for review'
  inputs:
    serviceEndpoint: 'My Apple App Store service connection'
    appIdentifier: com.yourorganization.testapplication.etc
    shouldAutoRelease: false