Skip to main content
Devin kann eine iOS-App archivieren, signieren, nach TestFlight hochladen und den Build einer Beta-Gruppe hinzufügen. Dabei führt Devin xcodebuild auf einer macOS-VM aus und authentifiziert sich mit einem App Store Connect API key, den Sie als Devin Secrets hinterlegen. Bevor Devin einen Build hochladen kann, müssen Sie:
  1. Ihre App in App Store Connect einrichten.
  2. Einen App Store Connect API key erstellen.
  3. Den Key und Ihre Team ID als Secrets in Devin hinzufügen.
  4. Sicherstellen, dass Devin die Server von Apple erreichen kann.
Für Uploads nach TestFlight sind macOS-Sitzungen erforderlich. Wenn Sie ein Dedicated-SaaS-Deployment nutzen, wenden Sie sich an Ihr Account-Team, um macOS-VMs aktivieren zu lassen.

Voraussetzungen

App Store Connect einrichten

Führen Sie diese Schritte im Apple Developer Portal und in App Store Connect aus. Devin kann sie nicht für Sie übernehmen: Die meisten erfordern einen Account Holder oder Admin, und für einige ist die Zwei-Faktor-Authentifizierung eines persönlichen Apple Accounts nötig.
1

Die neuesten Vereinbarungen akzeptieren

Der Account Holder meldet sich bei App Store Connect an und akzeptiert unter Business alle ausstehenden Vereinbarungen. Uploads schlagen fehl, solange eine erforderliche Vereinbarung aussteht.
2

Die Bundle-ID registrieren

Gehen Sie im Apple Developer Portal zu Certificates, Identifiers & Profiles → Identifiers und registrieren Sie eine App-ID, die zur Bundle-ID Ihres App-Targets passt. Überspringen Sie diesen Schritt, wenn der Identifier bereits vorhanden ist.
3

Den App-Eintrag erstellen

Gehen Sie in App Store Connect zu Apps, klicken Sie auf + und wählen Sie New App. Legen Sie Plattform, Name, Hauptsprache, die Bundle-ID aus dem vorherigen Schritt sowie eine SKU fest. TestFlight-Uploads schlagen fehl, wenn für die Bundle-ID kein App-Eintrag vorhanden ist.
4

Eine Beta-Gruppe erstellen

Öffnen Sie die App, gehen Sie zu TestFlight und erstellen Sie eine Gruppe:
  • Internal testing: Tester müssen Nutzer in Ihrem App Store Connect Team sein. Builds stehen zur Verfügung, sobald die Verarbeitung abgeschlossen ist.
  • External testing: Tester können beliebige Personen mit einer E-Mail-Adresse oder einem öffentlichen Link sein. Füllen Sie zuerst die Test Information aus (Beschreibung der Beta-App, E-Mail-Adresse für Feedback und Kontaktdaten für das Review). Der erste Build jeder Version durchläuft das Beta App Review.
5

Angaben zur Exportkonformität machen

Für jeden Build muss die Frage zur Exportkonformität beantwortet werden, bevor Tester ihn installieren können. Damit diese Frage nicht bei jedem Build erscheint, setzen Sie ITSAppUsesNonExemptEncryption in der Info.plist Ihrer App. Setzen Sie den Wert auf NO, wenn die App ausschließlich ausgenommene Verschlüsselung wie HTTPS verwendet.

App Store Connect API key erstellen

Devin authentifiziert sich mit einem App Store Connect API key, nicht mit einem Apple Account. Für den Key ist keine Zwei-Faktor-Authentifizierung erforderlich.
1

API-Zugriff aktivieren

Gehen Sie in App Store Connect zu Users and Access → Integrations → App Store Connect API. Falls der API-Zugriff noch nicht aktiviert ist, klickt der Account Holder auf Request Access und akzeptiert die Bedingungen.
2

Team Key generieren

Klicken Sie unter Team Keys auf +. Geben Sie einen Namen ein, etwa Devin TestFlight, und wählen Sie die Rolle App Manager. Zum Generieren eines Keys benötigen Sie die Admin-Rolle. Falls Xcode mit einem App-Manager-Key kein Verteilungszertifikat erstellen kann, generieren Sie stattdessen einen Key mit der Rolle Admin.
3

Private Key herunterladen

Klicken Sie neben dem neuen Key auf Download, um AuthKey_<KEY_ID>.p8 zu speichern. Apple erlaubt den Download der Datei nur ein einziges Mal. Wenn Sie sie verlieren, widerrufen Sie den Key und generieren einen neuen.
4

Issuer ID und Key ID kopieren

Die Issuer ID wird oberhalb der Tabelle mit den Keys angezeigt. Die Key ID steht in der Zeile des jeweiligen Keys.
5

Team ID finden

Gehen Sie im Apple Developer Portal zu Membership details und kopieren Sie die Team ID. Es handelt sich um eine 10-stellige Zeichenfolge, zum Beispiel A1B2C3D4E5.
Wer die .p8-Datei besitzt, kann Builds hochladen und TestFlight für sämtliche Apps Ihres Teams verwalten. Speichern Sie sie ausschließlich in Devin Secrets und committen Sie sie nicht in ein Repository.

Secrets zu Devin hinzufügen

Fügen Sie die folgenden Werte als Raw Secrets auf der Secrets page hinzu: Führen Sie folgenden Befehl aus, um den Private Key auf einem Mac zu kopieren:
Wählen Sie einen Geltungsbereich für die Secrets:
  • Organization: Jede Sitzung in Ihrer Organisation kann den Key verwenden. Nutzen Sie diesen Geltungsbereich, wenn das Team Builds mit Devin ausliefert.
  • Personal: Nur von Ihnen gestartete Sitzungen können den Key verwenden.
Secrets stehen nur in Sitzungen zur Verfügung, die nach dem Hinzufügen gestartet werden. Weitere Informationen zu Geltungsbereichen finden Sie unter Secrets.

Netzwerkzugriff erlauben

Die macOS-VM von Devin muss die Server von Apple erreichen, um Builds zu signieren und hochzuladen. Wenn Ihre Organisation eine eingeschränkte Netzwerkrichtlinie verwendet, fügen Sie api.appstoreconnect.apple.com sowie die weiteren Apple-Hosts hinzu, die xcodebuild zum Signieren und Hochladen nutzt. Eine Freigabe von *.apple.com deckt sie alle ab. Ein blockierter Host äußert sich meist als Authentifizierungsfehler, nicht als Netzwerkfehler. Siehe Fehlerbehebung.

Einen Build hochladen

Starten Sie eine macOS-Sitzung und bitten Sie Devin, einen Build hochzuladen:
Devin verwendet die Secrets für Folgendes:
  1. ASC_PRIVATE_KEY mit den Berechtigungen 0600 nach ~/.appstoreconnect/private_keys/AuthKey_$ASC_KEY_ID.p8 schreiben.
  2. Die neueste Build-Nummer über die App Store Connect API prüfen und eine höhere wählen.
  3. Die App mit xcodebuild archive archivieren.
  4. Den Build mit xcodebuild -exportArchive signieren und hochladen.
  5. Warten, bis die Verarbeitung abgeschlossen ist, und den Build anschließend über die App Store Connect API zur Beta-Gruppe hinzufügen.
Der Export-Schritt verwendet eine Export-Options-plist, in der destination auf upload gesetzt ist:
Und diese Befehle:
-allowProvisioningUpdates ermöglicht es Xcode, das Verteilungszertifikat und das Provisioning-Profil mit dem API key zu erstellen, sodass auf der VM keine Signaturressourcen installiert sein müssen. Wenn dein Repository bereits ein Release-Skript enthält, etwa eine fastlane-Lane oder ein make-Target, weise Devin an, dieses zu verwenden. fastlane nimmt denselben Schlüssel über app_store_connect_api_key entgegen.

Die Schritte im Blueprint speichern

Damit du die Anweisungen nicht in jedem Prompt wiederholen musst, füge sie dem Abschnitt knowledge im Blueprint deines Repository hinzu:

Fehlerbehebung

No Accounts with App Store Connect Access oder Failed to Use Accounts beim Export. Prüfen Sie zuerst den Netzwerkzugriff. Wenn die VM die Server von Apple nicht erreichen kann, meldet xcodebuild diesen Fehler auch dann, wenn der Key gültig ist. Achten Sie in den Zeilen darüber auf ITunesConnectFoundationErrorDomain Code=-1003. Wenn das Netzwerk in Ordnung ist, prüfen Sie, ob der Key die Rolle App Manager hat. No profiles for '<bundle ID>' were found. Die Bundle-ID ist nicht für das Team in APPLE_TEAM_ID registriert, oder es existiert kein zugehöriger App-Eintrag in App Store Connect. The provided entity includes an attribute with a value that has already been used. Die Build-Nummer wurde für diese Version bereits verwendet. Laden Sie erneut mit einer höheren Build-Nummer hoch. Der Build wird hochgeladen, aber Tester können ihn nicht installieren. Prüfen Sie den Build in App Store Connect → TestFlight. Möglicherweise wird er noch verarbeitet, es fehlen Angaben zur Exportkonformität, oder er wartet auf das Beta App Review. Xcode kann kein Verteilungszertifikat erstellen. Die Rolle des Keys erlaubt das Verwalten von Zertifikaten nicht. Erzeugen Sie einen Key mit der Rolle Admin, oder lassen Sie einen Admin das Verteilungszertifikat im Apple Developer Portal erstellen. Umgebungsvariablen sind in der Sitzung leer. Secrets stehen nur in Sitzungen zur Verfügung, die nach dem Hinzufügen gestartet wurden. Starten Sie eine neue Sitzung.