[SWIFT] Après avoir renouvelé le certificat avec CircleCI × fastlane, j'obtiens un état de sortie: erreur 65.

Contexte

Sur le site actuel, circleCI se déplace au moment où il est engagé dans la branche de développement, Fastlane se déplace et il est téléchargé sur deployGate. Quand j'ai renouvelé le certificat, pour une raison quelconque, Fastlane s'est écrasé avec ʻ Statut de sortie: 65`.

Quand je me suis connecté à CircleCI avec ssh et que j'ai regardé le journal, il m'a semblé que le code était en panne avec une erreur ʻerrsec internal component`.

Ce que j'ai fait

Ajouter l'autorité au fichier p12 enregistré dans circleCI

Double-cliquez sur la clé privée cible dans l'application de trousseau → Contrôle d'accès → Ajouter / usr / bin / codesign et xcode à la liste toujours autorisée.

Référence: https://qiita.com/sekitaka_1214/items/61d68d603ee1c1b7adf1

Déverrouillez le porte-clés

Connectez-vous à CircleCI avec ssh et appuyez sur la commande ↓. security unlock-keychain login.keychain

Voir aussi: https://stackoverflow.com/questions/24023639/xcode-command-usr-bin-codesign-failed-with-exit-code-1-errsecinternalcomponen

Ces deux n'ont pas résolu le problème. ..

Solution

À la suite de diverses réflexions, il semble que le nouveau certificat ait changé depuis l'ancien certificat et le certificat intermédiaire (Apple Worldwide Developer Relations Certification), et le problème était que CircleCI ne pouvait pas lire le nouveau certificat intermédiaire.

Contenu de la correspondance

  1. Téléchargez le certificat intermédiaire (.cer).
  2. Encodez le certificat intermédiaire en Base64 et définissez-le dans CircleCI en tant que variable d'environnement. base64 -i (certificat intermédiaire) | pbcopy (Cette fois, il a été défini comme APPLE_RELATION_CERT.)
  3. Décodez le certificat intermédiaire sur CircleCI.

yml:.circleci/config.yml


- run: 
   name: Decode releation certificates
   command: base64 -D -o AppleWWDRCAG3.cer \<<< $APPLE_RELATION_CERT
  1. Enregistrez le certificat intermédiaire dans le trousseau avec Fastlane.

fastlane/Fastlane


import_certificate(
  keychain_name: ENV["MATCH_KEYCHAIN_NAME"],
  keychain_password: ENV["MATCH_KEYCHAIN_PASSWORD"],
  certificate_path: 'AppleWWDRCAG3.cer',
  certificate_password: ''
)

Cela a fonctionné!

Sommaire

Je suis resté coincé dans ce bug pendant une journée entière. .. Si quelqu'un sait comment CircleCI ou fastlane peut lire le nouveau certificat intermédiaire, merci de me le faire savoir (> _ <)

J'ai fait de mon mieux pour gérer cela, alors s'il vous plaît LGTM si vous le souhaitez ᕦ (ò_óˇ) ᕤ

Recommended Posts

Après avoir renouvelé le certificat avec CircleCI × fastlane, j'obtiens un état de sortie: erreur 65.
J'obtiens une erreur lors de l'ajout d'une dépendance
Quand je bcrypt avec node + docker, j'ai une erreur
Une note sur "Ne pas émettre une erreur de certificat avec un certificat auto-signé à l'aide de Keytool Java"
Je n'ai trouvé aucun moyen d'obtenir le code d'erreur lorsque j'ai reçu une exception sur Android
Une erreur 404 se produit lors du test de l'authentification par formulaire avec Spring Security
J'obtiens une erreur avec l'installation du bundle et puma ne peut pas être installé.
Je souhaite afficher un message d'erreur lors de l'inscription dans la base de données
Envoyer un e-mail lorsque le journal de niveau d'ERREUR se produit avec SMTP Appender de logback
[JavaScript] Axios (ajax) ne peut pas obtenir le corps de la réponse au moment d'une erreur
L'histoire lorsque le conteneur ne démarre pas avec docker-compose up et qu'une erreur se produit
J'ai une question. Une erreur se produit lors de la lecture d'une vidéo dans Listview avec Android.
J'obtiens Mysql2 :: Error :: ConnectionError dans l'environnement de production
[Rails] Que faire si vous ne pouvez pas obtenir de message d'erreur avec la méthode des erreurs
J'ai eu une erreur lors de l'utilisation de nextInt, nextLine et substring.
J'ai une exception InvalidUseOfMatchersException lors de l'utilisation de l'un dans le simulateur de JUnit
Je veux rendre le cadre de la zone de texte rouge lorsqu'il y a une erreur de saisie