View a markdown version of this page

Tutoriel : signature de code Apple avec Fastlane lors de CodeBuild l'utilisation GitHub pour le stockage des certificats - AWS CodeBuild

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Tutoriel : signature de code Apple avec Fastlane lors de CodeBuild l'utilisation GitHub pour le stockage des certificats

fastlane est un outil d'automatisation open source populaire qui permet d'automatiser les déploiements et les versions bêta de vos applications iOS et Android. Il gère toutes les tâches fastidieuses, telles que la génération de captures d'écran, la signature de code et la publication de votre application.

Cet exemple montre comment configurer la signature de code Apple à l'aide de Fastlane dans un CodeBuild projet exécuté sur une flotte de Mac, avec GitHub comme stockage pour les certificats et les profils de provisionnement.

Conditions préalables

Pour terminer ce didacticiel, vous devez d'abord avoir configuré les éléments suivants :

  • Un Compte AWS

  • Un compte Apple Developer

  • Un GitHub référentiel privé pour le stockage des certificats

  • fastlane installé dans votre projet - Guide d'installation de fastlane

Étape 1 : Configurez Fastlane Match with GitHub sur votre machine locale

Fastlane Match est l'un des outils de Fastlane. Il permet une configuration fluide pour la signature de code, à la fois dans votre environnement de développement local et ailleurs. CodeBuild Fastlane Match stocke tous vos certificats de signature de code et vos profils d'approvisionnement dans un stockage Git repository/S3 Bucket/Google Cloud, et télécharge et installe les certificats et profils nécessaires si nécessaire.

Dans cet exemple de configuration, nous allons configurer et utiliser un dépôt Git pour le stockage.

  1. Initialisez Match dans votre projet :

    fastlane match init
  2. Lorsque vous y êtes invité, choisissez GitHub comme mode de stockage.

  3. Mettez à jour votre `Matchfile` pour utiliser GitHub :

    git_url("https://github.com/your-username/your-certificate-repo.git") storage_mode("git") type("development") # The default type, can be: appstore, adhoc, enterprise or development
Note

Assurez-vous de saisir l'URL HTTPS de votre dépôt Git pour que Fastlane puisse s'authentifier et cloner avec succès. Sinon, une erreur d'authentification peut s'afficher lorsque vous tentez d'utiliser Match.

Étape 2 : Configurez votre Fastfile

Créez ou mettez à jour votre `Fastfile` avec la voie suivante.

Activé CodeBuild, Fastlane Match devra être exécuté chaque fois que vous créez et signez votre application. Le moyen le plus simple de le faire est d'ajouter l'matchaction à la voie qui crée votre application.

default_platform(:ios) platform :ios do before_all do setup_ci end desc "Build and sign the app" lane :build do match(type: "appstore", readonly: true) gym( scheme: "YourScheme", export_method: "app-store" ) end end
Note

Assurez-vous de compléter setup_ci la before_all section Fastfile pour que l'action de match fonctionne correctement. Cela garantit l'utilisation d'un porte-clés Fastlane temporaire doté des autorisations appropriées. Si vous ne l'utilisez pas, vous risquez de rencontrer des échecs de compilation ou des résultats incohérents.

Étape 3 : Exécutez la commande fastlane match pour générer les certificats et profils respectifs

La commande fastlane match pour le type donné (développement, appstore, adhoc, entreprise) générera le certificat et le profil s'ils ne sont pas disponibles dans le magasin distant. Les certificats et les profils seront stockés dans GitHub Fastlane.

bundle exec fastlane match appstore

L'exécution de la commande sera interactive et fastlane vous demandera de définir une phrase de passe pour déchiffrer les certificats.

Étape 4 : Création du dossier de candidature pour votre projet

Créez ou ajoutez le dossier de candidature en fonction de votre projet.

  1. Créez ou ajoutez le Gymfile, l'Appfile, le Snapfile, le Deliverfile en fonction des exigences de création de votre projet.

  2. Validez les modifications dans votre référentiel distant.

Étape 5 : Création de variables d'environnement dans Secrets Manager

Créez trois secrets pour stocker le cookie de session Fastlane et le mot de passe correspondant. Pour plus d'informations sur la création de secrets dans Secrets Manager, voir Créer un AWS Secrets Manager secret.

  1. Accédez à votre cookie de session Fastlane comme suit.

    1. Clé secrète - FASTLANE_SESSION

    2. Valeur secrète : cookie de session généré lors de l'exécution de la commande suivante sur votre machine locale.

      Note

      Cette valeur est disponible après authentification dans un fichier local :~/.fastlane/spaceship/my_appleid_username/cookie.

      fastlane spaceauth -u <Apple_account>
  2. Phrase de passe Fastlane Match - Pour permettre à Fastlane Match de déchiffrer les certificats et les profils stockés dans le référentiel Git, il est nécessaire d'ajouter le mot de passe de cryptage que vous avez configuré lors de l'étape de configuration de Match aux variables d'environnement du projet. CodeBuild

    1. Clé secrète - MATCH_PASSWORD

    2. Valeur secrète -<match passphrase to decrypt certificates>. La phrase secrète est définie lors de la génération des certificats à l'étape 3.

  3. Fastlane MATCH_GIT_BASIC_AUTHORIZATION - définissez une autorisation de base pour le match :

    1. Clé secrète :

      MATCH_GIT_BASIC_AUTHORIZATION

    2. Valeur secrète : la valeur doit être une chaîne codée en base64 contenant votre nom d'utilisateur et votre jeton d'accès personnel (PAT) au formatusername:password. Vous pouvez le générer à l'aide de la commande suivante :

      echo -n your_github_username:your_personal_access_token | base64

      Vous pouvez générer votre PAT sur la GitHub console dans Votre profil > Paramètres > Paramètres des développeurs > Jeton d'accès personnel. Pour plus d'informations, consultez le guide suivant : https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens.

Note

Lorsque vous créez les secrets ci-dessus dans Secrets Manager, n'oubliez pas de donner un nom secret avec le préfixe suivant : /CodeBuild/

Étape 6 : Création d'un parc informatique

Créez le parc informatique pour votre projet.

  1. Dans la console, accédez à CodeBuild et créez un nouveau parc informatique.

  2. Choisissez macOS le système d'exploitation et sélectionnez un type de calcul et une image appropriés.

Étape 7 : Créez un projet dans CodeBuild

Créez votre projet dans CodeBuild.

  1. Ouvrez la AWS CodeBuild console à l'adresse https://console.aws.amazon.com/codesuite/codebuild/home.

  2. Créez un projet de génération. Pour plus d’informations, consultez Création d'un projet de génération (console) et Exécution d'une génération (console).

  3. Configurez votre fournisseur source (tel que GitHub, CodeCommit). Il s'agit d'un référentiel de sources de projets iOS et non d'un référentiel de certificats.

  4. Dans Environment (Environnement) :

    • Choisissez Capacité réservée.

    • Pour Fleet, sélectionnez la flotte créée ci-dessus.

    • Indiquez le nom du rôle de service qui CodeBuild sera créé pour vous.

    • Fournissez les variables d'environnement ci-dessous.

      • Nom :MATCH_PASSWORD, Valeur :<secrets arn>, Type : Gestionnaire de secrets (ARN de secrets créé à l'étape 5 pour MATCH_PASSWORD)

      • Nom :FASTLANE_SESSION, Valeur :<secrets arn>, Type : Gestionnaire de secrets (ARN de secrets créé à l'étape 5 pour FASTLANE_SESSION)

      • Nom :MATCH_GIT_BASIC_AUTHORIZATION, Valeur :<secrets ARN>, Type : Secrets Manager Secrets ARN (créé à l'étape 5 pourMATCH_GIT_BASIC_AUTHORIZATION)

  5. Dans Buildspec, ajoutez ce qui suit :

    version: 0.2 phases: install: commands: - gem install bundler - bundle install build: commands: - echo "Building and signing the app..." - bundle exec fastlane build post_build: commands: - echo "Build completed on date" artifacts: files: - '*/.ipa' name: app-$(date +%Y-%m-%d)

Étape 8 : Exécutez la compilation

Exécutez la génération. Vous pouvez consulter l'état de la compilation et vous connecter CodeBuild.

Une fois la tâche terminée, vous pourrez consulter le journal de la tâche.

Résolution des problèmes

  • Si vous rencontrez des problèmes pour accéder au GitHub référentiel, vérifiez votre jeton d'accès personnel et la variable d'environnement MATCH_GIT_BASIC_AUTHORIZATION.

  • Si vous rencontrez des problèmes lors du déchiffrement des certificats, assurez-vous de définir le mot de passe correct dans la variable d'environnement MATCH_PASSWORD.

  • En cas de problème de signature de code, vérifiez que votre compte Apple Developer possède les certificats et les profils nécessaires, et que l'identifiant du bundle dans votre projet Xcode correspond à celui de votre profil d'approvisionnement.

Considérations sur la sécurité

Les considérations de sécurité pour ce didacticiel sont les suivantes.

  • Préservez la confidentialité de votre GitHub référentiel de certificats et contrôlez régulièrement l'accès.

  • Pensez à AWS Secrets Manager les utiliser pour stocker des informations sensibles telles que MATCH_PASSWORD et FASTLANE_SESSION.

Cet exemple fournit une configuration pour la signature de code iOS avec Fastlane lors de CodeBuild l'utilisation GitHub pour le stockage des certificats. Vous devrez peut-être ajuster certaines étapes en fonction des exigences et de CodeBuild l'environnement spécifiques de votre projet. Cette approche tire parti des AWS services pour améliorer la sécurité et l'intégration au sein de l' AWS écosystème.