[SWIFT] Nach dem Erneuern des Zertifikats mit CircleCI × fastlane erhalte ich den Fehler Exit status: 65.

Hintergrund

Am aktuellen Standort wird circleCI zu dem Zeitpunkt verschoben, zu dem es für den Entwicklungszweig festgeschrieben wird. Fastlane wird verschoben und in deployGate hochgeladen. Als ich das Zertifikat erneuerte, stürzte fastlane aus irgendeinem Grund mit "Exit status: 65" ab.

Als ich mich mit ssh mit CircleCI verband und das Protokoll betrachtete, schien das Codesign mit einem Fehler "errsecinternalcomponent" ausgefallen zu sein.

Was ich getan habe

Fügen Sie der in circleCI registrierten p12-Datei die Berechtigung hinzu

Doppelklicken Sie in der Schlüsselbund-App auf den privaten Zielschlüssel → Zugriffssteuerung → Fügen Sie / usr / bin / Codesign und xcode zur immer zulässigen Liste hinzu.

Referenz: https://qiita.com/sekitaka_1214/items/61d68d603ee1c1b7adf1

Entriegeln Sie die Schlüsselkette

Stellen Sie mit ssh eine Verbindung zu CircleCI her und drücken Sie den Befehl ↓. security unlock-keychain login.keychain

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

Diese beiden haben das Problem nicht gelöst. ..

Lösung

Aufgrund verschiedener Überlegungen scheint sich das neue Zertifikat gegenüber dem alten Zertifikat und dem Zwischenzertifikat (Apple Worldwide Developer Relations-Zertifizierung) geändert zu haben, und das Problem bestand darin, dass CircleCI das neue Zwischenzertifikat nicht lesen konnte.

Korrespondenzinhalt

  1. Laden Sie das Zwischenzertifikat (.cer) herunter.
  2. Base64-codieren Sie das Zwischenzertifikat und legen Sie es in CircleCI als Umgebungsvariable fest. base64 -i (Zwischenzertifikat) | pbcopy (Dieses Mal wurde es als APPLE_RELATION_CERT festgelegt.)
  3. Dekodieren Sie das Zwischenzertifikat in CircleCI.

yml:.circleci/config.yml


- run: 
   name: Decode releation certificates
   command: base64 -D -o AppleWWDRCAG3.cer \<<< $APPLE_RELATION_CERT
  1. Registrieren Sie das Zwischenzertifikat im Schlüsselbund bei Fastlane.

fastlane/Fastlane


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

Das hat funktioniert!

Zusammenfassung

Ich blieb einen ganzen Tag in diesem Fehler stecken. .. Wenn jemand weiß, wie CircleCI oder Fastlane das neue Zwischenzertifikat lesen können, lassen Sie es mich bitte wissen (> _ <)

Ich habe mein Bestes getan, um damit umzugehen, also bitte LGTM, wenn Sie ᕦ (ò_óˇ) ᕤ mögen

Recommended Posts

Nach dem Erneuern des Zertifikats mit CircleCI × fastlane erhalte ich den Fehler Exit status: 65.
Beim Hinzufügen einer Abhängigkeit wird eine Fehlermeldung angezeigt
Beim Verschlüsseln mit Node + Docker wurde eine Fehlermeldung angezeigt
Ein Hinweis zu "Stellen Sie mit einem selbstsignierten Zertifikat mit Javas Keytool keinen Zertifikatfehler aus"
Ich habe keine Möglichkeit gefunden, den Fehlercode abzurufen, als ich eine Ausnahme unter Android erhalten habe
Beim Testen der Formularauthentifizierung mit Spring Security tritt ein 404-Fehler auf
Ich erhalte eine Fehlermeldung bei der Bundle-Installation und Puma kann nicht installiert werden.
Ich möchte bei der Registrierung in der Datenbank eine Fehlermeldung anzeigen
Senden Sie eine E-Mail, wenn ein Protokoll auf ERROR-Ebene mit SMTP Appender of Logback auftritt
[JavaScript] Axios (Ajax) kann den Antworttext zum Zeitpunkt eines Fehlers nicht abrufen
Die Geschichte, wenn der Container nicht mit Docker-Compose gestartet wird und ein Fehler auftritt
Ich habe eine Frage. Beim Abspielen eines Videos in Listview mit Android tritt ein Fehler auf.
Ich erhalte Mysql2 :: Error :: ConnectionError in der Produktionsumgebung
[Schienen] Was tun, wenn mit der Fehlermethode keine Fehlermeldung angezeigt wird?
Bei der Verwendung von nextInt, nextLine und substring ist ein Fehler aufgetreten.
Ich habe eine InvalidUseOfMatchersException erhalten, wenn ich eine in JUnits Mock verwende
Ich möchte den Rahmen des Textfelds rot machen, wenn ein Eingabefehler auftritt