Signer une application mobile
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Pour signer et approvisionner une application mobile pour les systèmes d’exploitation Android ou Apple, vous devez gérer les certificats de signature et les profils d’approvisionnement Apple. Cet article explique comment gérer en toute sécurité les certificats et les profils pour la signature et l’approvisionnement de votre application dans Azure Pipelines.
Remarque
Vous avez besoin d’au moins un agent pour exécuter une build ou une version. Vous pouvez utiliser un agent de build Linux, macOS ou Windows hébergé par Microsoft, ou configurer votre propre agent. Pour plus d’informations, consultez Les agents de build et de mise en production.
Signer votre application Android
Suivez ces étapes pour signer votre application Android tout en conservant votre certificat de signature sécurisé.
Charger le fichier de magasin de clés
Obtenez un fichier de magasin de clés qui contient votre certificat de signature. La documentation Android décrit le processus de génération d’un fichier de magasin de clés et de sa clé correspondante.
Dans Azure Pipelines, accédez aux fichiers sécurisés des bibliothèques>. Sélectionnez + Fichier sécurisé et chargez votre fichier de magasin de clés dans la bibliothèque de fichiers sécurisés. Pendant le chargement, votre magasin de clés est chiffré et stocké en toute sécurité.
Ajouter la tâche de signature au pipeline
Ajoutez la tâche AndroidSigning@3 à votre pipeline YAML après l’étape qui génère votre application. Dans la AndroidSigning@3
tâche :
<apkFiles>
est obligatoire et correspond au chemin d’accès et aux noms des fichiers APK à signer. Par défaut, il s’agit de**/*.apk
.<apksign>
doit êtretrue
, qui est la valeur par défaut.<keystore-file>
est le nom de votre fichier de magasin de clés chargé dans la bibliothèque de fichiers sécurisés.<apksignerKeystorePassword>
est le mot de passe du fichier de magasin de clés non chiffré.<apksignerKeystoreAlias>
est l’alias de clé du certificat de signature.<apksignerKeyPassword>
est le mot de passe de la clé associée à l’alias spécifié.
Vous pouvez définir et utiliser des variables dans YAML, ou vous pouvez définir les variables à l’aide de l’onglet Variables de l’interface utilisateur Azure Pipelines et les référencer dans yaML.
variables:
keystore-password: <keystore file password>
key-alias: <key alias for the signing certificater>
key-password: <password for the key associated with the alias>
steps:
- task: AndroidSigning@3
displayName: 'Signing and aligning APK file(s) **/*.apk'
inputs:
apkFiles: '**/*.apk'
apksign: true
apksignerKeystoreFile: <keystore-filename.keystore>
apksignerKeystorePassword: $(keystore-password)
apksignerKeystoreAlias: $(key-alias)
apksignerKeyPassword: $(key-password)
Tout agent de build peut désormais signer en toute sécurité votre application sans gestion des certificats sur l’ordinateur de build lui-même.
Signer votre application Apple iOS, macOS, tvOS ou watchOS
Pour signer et approvisionner votre application, votre build Xcode ou Xamarin.iOS a besoin d’accéder à votre certificat de signature P12 et à un ou plusieurs profils d’approvisionnement. Les étapes suivantes expliquent comment obtenir ces fichiers.
Obtenir votre certificat de signature P12
Exportez votre certificat de signature de développement ou de distribution vers un fichier .p12 à l’aide de Xcode ou de l’application Keychain Access sur macOS.
Pour exporter à l’aide de Xcode :
Accédez aux comptes de préférences>Xcode.>
Dans la colonne de gauche, sélectionnez votre ID Apple.
Sur le côté droit, sélectionnez votre compte personnel ou votre compte d’équipe, puis sélectionnez Gérer les certificats.
Ctrl+Sélectionner le certificat que vous souhaitez exporter et sélectionner Exporter le certificat dans le menu.
Dans la boîte de dialogue, entrez le nom du certificat, l’emplacement pour enregistrer le fichier et un mot de passe pour sécuriser le certificat.
Vous pouvez également utiliser la procédure décrite dans la signature iOS pour suivre un processus similaire à l’aide de l’application Keychain Access sur macOS ou générer un certificat de signature sur Windows.
Chargez votre fichier P12 dans la bibliothèque de fichiers sécurisés Azure Pipelines. Pendant le chargement, votre certificat est chiffré et stocké en toute sécurité.
Dans votre pipeline, accédez à l’onglet Variables et ajoutez une variable nommée P12password avec votre mot de passe de certificat comme valeur. Veillez à sélectionner l’icône de verrouillage pour sécuriser votre mot de passe et les masquer dans les journaux.
Obtenir votre profil d’approvisionnement
Si votre application n’utilise pas la signature automatique, vous pouvez télécharger votre profil d’approvisionnement d’application à partir du portail des développeurs Apple. Pour plus d’informations, consultez Modifier, télécharger ou supprimer des profils d’approvisionnement.
Vous pouvez également utiliser Xcode pour accéder aux profils d’approvisionnement installés sur votre Mac. Dans Xcode, accédez aux comptes de préférences>Xcode.> Sélectionnez votre ID Apple et votre équipe, puis téléchargez des profils manuels.
Dans Azure Pipelines, chargez votre profil d’approvisionnement dans la bibliothèque de fichiers sécurisés. Pendant le chargement, votre fichier est chiffré et stocké en toute sécurité.
Ajouter les tâches de signature et d’approvisionnement au pipeline
Pour signer et approvisionner votre application, vous pouvez installer le certificat et le profil pendant chaque build, ou préinstaller les fichiers sur un agent de build macOS.
Installer le certificat et le profil pendant chaque build
Installez le certificat et le profil pendant chaque build lorsque vous n’avez pas d’accès durable à l’agent de build, par exemple lorsque vous utilisez des agents macOS hébergés. Le certificat P12 et le profil d’approvisionnement sont installés au début de la build et supprimés une fois qu’elle est terminée.
Ajoutez la tâche InstallAppleCertificate@2 à votre pipeline YAML avant la tâche Xcode ou Xamarin.iOS. Dans le code, remplacez
<secure-file.p12>
par le nom de votre fichier .p12 chargé. Utilisez la variable pour le fichier sécuriséP12password
.- task: InstallAppleCertificate@2 inputs: certSecureFile: '<secure-file.p12>' certPwd: '$(P12password)'
Remarque
Dans la
InstallAppleCertificate@2
tâche, ledeleteCert
paramètre est défini par défauttrue
sur , ce qui supprime le certificat après la génération.Ajoutez la tâche InstallAppleProvisioningProfile@1 à votre yaML avant la tâche Xcode ou Xamarin.iOS. Remplacez
<secure-file.mobileprovision>
par le nom de votre fichier de profil d’approvisionnement.- task: InstallAppleProvisioningProfile@1 inputs: provProfileSecureFile: '<secure-file.mobileprovision>'
Remarque
Dans la
InstallAppleProvisioningProfile@1
tâche, leremoveProfile
paramètre est défini par défauttrue
sur , ce qui supprime le profil après la génération.
Tout agent de build peut désormais signer en toute sécurité votre application sans aucune gestion de certificat ou de profil sur l’ordinateur de build lui-même.
Préinstaller le certificat et le profil sur un agent de build macOS
Au lieu d’installer le certificat de signature et les profils d’approvisionnement pendant la build, vous pouvez les préinstaller sur un agent de build macOS. Les fichiers sont ensuite disponibles pour une utilisation continue par les builds. Utilisez cette méthode uniquement lorsque vous faites confiance aux personnes et processus qui ont accès au trousseau macOS sur l’ordinateur agent.
Préinstaller le certificat P12
Pour installer le certificat P12 dans le trousseau par défaut, exécutez la commande suivante à partir d’une fenêtre de terminal macOS sur l’agent de build. Remplacez
<certificate.p12>
par le chemin d’accès et le nom de votre fichier P12. Remplacez<password>
par le mot de passe de chiffrement de votre fichier P12.sudo security import <certificate.p12> -P <password>
Ajoutez une nouvelle variable à votre pipeline nommé KEYCHAIN_PWD. Définissez la valeur comme mot de passe sur le trousseau par défaut, qui est normalement le mot de passe de l’utilisateur qui démarre l’agent. Veillez à sélectionner l’icône de verrouillage pour sécuriser ce mot de passe.
Préinstaller le profil d’approvisionnement
Recherchez le nom complet de votre identité de signature en ouvrant une fenêtre de terminal macOS et en entrant
security find-identity -v -p codesigning
. Vous voyez une liste d’identités de signature dans le formulaireiPhone Developer/Distribution: Developer Name (ID)
. Si une identité n’est pas valide, vous voyez quelque chose comme(CSSMERR_TP_CERT_REVOKED)
après l’identité.Pour installer le profil d’approvisionnement sur l’ordinateur agent, exécutez la commande suivante à partir d’une fenêtre de terminal macOS. Remplacez
<profile>
par le chemin d’accès à votre fichier de profil d’approvisionnement et remplacez-le<UUID>
par l’UUID du profil d’approvisionnement, qui est le nom de fichier de profil d’approvisionnement sans l’extension.mobileprovision
.sudo cp <profile> ~/Library/MobileDevice/Provisioning Profiles/<UUID>.mobileprovision
Ajouter des tâches de signature et d’approvisionnement qui utilisent le trousseau par défaut
Ajoutez la tâche InstallAppleCertificate@2 à votre pipeline YAML avant la tâche Xcode ou Xamarin.iOS. Dans le code, définissez les valeurs suivantes :
certSecureFile
: nom de votre fichier .p12 chargé.certPwd
: Variable pour le secureP12password
.signingIdentity
: nom complet de votre identité de signature.keychain
: ,default
pour autoriser l’accès au trousseau par défaut.keychainPassword
: VariableKEYCHAIN_PWD
.deleteCert
: ,false
pour conserver le certificat entre les builds.
- task: InstallAppleCertificate@2 inputs: certSecureFile: '<secure-file.p12>' certPwd: '$(P12password)' signingIdentity: <full-signing-identity> keychain: default keychainPassword: `$(KEYCHAIN_PWD) deleteCert: false
Ajoutez la tâche InstallAppleProvisioningProfile@1 . Dans le code :
- Définissez
provProfileSecureFile
le nom de votre fichier de profil d’approvisionnement. - Défini
removeProfile
pourfalse
que le profil soit conservé entre les builds.
- task: InstallAppleProvisioningProfile@1 inputs: provProfileSecureFile: '<secure-file.mobileprovision>' removeProfile: false
- Définissez
L’agent de build macOS peut désormais signer et provisionner votre application de manière sécurisée pour toutes les builds sans gestion de certificat ou de profil supplémentaire.
Référencer les fichiers sécurisés dans la tâche de génération Xcode ou Xamarin.iOS
Pour utiliser le certificat et le profil sécurisés dans vos pipelines, configurez les paramètres suivants dans vos tâches de build Xcode ou Xamarin.iOS.
Les références de fichiers sécurisés dans les tâches de génération utilisent des variables pour le signingIdentity
et le provisioningProfileUuid
. Ces variables sont automatiquement définies par les tâches Installer le certificat Apple et installer le profil d’approvisionnement Apple pour le certificat et le profil d’approvisionnement que vous avez sélectionnés.
Pour Xcode :
- task: Xcode@5
inputs:
signingOption: 'manual'
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'
Pour Xamarin.iOS :
- task: XamariniOS@2
inputs:
solutionFile: '**/*.iOS.csproj'
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'
L’agent de build de pipeline signe et provisionne désormais en toute sécurité votre application sans autre gestion de certificat ou de profil sur l’ordinateur de build lui-même.
Contenu connexe
Le cas échéant, consultez les références suivantes :
- Pipelines pour les applications Android, consultez Build, test et déployer des applications Android.
- Pipelines pour les applications iOS, consultez Générer, tester et déployer des applications Xcode.
- Agents, consultez les agents Azure Pipelines.
- Pools d’agents et files d’attente, consultez Créer et gérer des pools d’agents.
- Variables dans les pipelines, consultez Définir des variables.
- Résolution des problèmes de pipeline, consultez Résoudre les problèmes d’exécutions de pipeline.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour