Hier ist die Übersetzung des Textes ins Deutsche:
Kontinuierliche Auslieferung für iOS mit Fastlane und GitHub Actions und Zertifikat
Voraussetzungen
Bevor Sie mit dem Tutorial fortfahren…
- Stellen Sie sicher, dass Sie Fastlane auf Ihrem Entwicklungsrechner installiert haben
- iOS-Entwicklerprogramm-Mitgliedschaft
- Lust zum Lesen 😆…
Wichtiges zum Preis
https://githubcom/features/actions
Der Dienst ist bis zur Grenze ‘kostenlos’, abhängig von der gewählten Maschine Wir werden eine macOS-Maschine verwenden, Sie können im Screenshot den Preis und die Grenzen sehen (Preise zum Zeitpunkt der Erstellung des Tutorials, sie könnten sich in Zukunft ändern)
🔴 Nach dieser Warnung zu Anforderungen und Preisen fahren wir fort, wenn Sie möchten…
📣 Im Beitrag gehen wir davon aus, dass wir die App in iTunes Connect erstellt haben, wir haben die Zertifikate des Apple-Ökosystems, alles wird von Fastlane kopiert!
Gehen wir zur Sache 🧑🏽💻
Zu befolgende Schritte im Beitrag
- Verwendung der App Store Connect API mit Fastlane
- Anforderungen
- Erstellung eines App Store Connect API-Schlüssels
- Verwendung eines App Store Connect API-Schlüssels
- Kopieren der Fastlane-Dateien
- Konfiguration von GitHub Actions
1. Verwendung der App Store Connect API mit Fastlane
Ab Februar 2021 ist eine Zwei-Faktor-Authentifizierung oder Zwei-Schritt-Verifizierung für alle Benutzer erforderlich, um sich bei App Store Connect anzumelden. Diese zusätzliche Sicherheitsebene für Ihre Apple-ID hilft sicherzustellen, dass nur Sie auf Ihr Konto zugreifen können. Von Apple Support
Anforderungen
Um die App Store Connect API verwenden zu können, benötigt Fastlane drei Dinge:
- Aussteller-ID
- Schlüssel-ID
- Schlüsseldatei oder Schlüsselinhalt
Erstellung eines App Store Connect API-Schlüssels
Um Schlüssel zu generieren, müssen Sie Admin-Berechtigung in App Store Connect haben. Wenn Sie diese Berechtigung nicht haben, können Sie die zuständige Person auf diesen Artikel verweisen und die folgenden Anweisungen befolgen.
1 — Melden Sie sich bei App Store Connect an
2 — Wählen Sie Benutzer und Zugriff
3 — Wählen Sie die Registerkarte API-Schlüssel
4 — Klicken Sie auf API-Schlüssel generieren oder auf die Schaltfläche Hinzufügen (+)
5 — Geben Sie einen Namen für den Schlüssel ein. Der Name dient nur zu Ihrer Information und ist nicht Teil des Schlüssels selbst
6 — Wählen Sie unter Zugriff die Rolle für den Schlüssel aus. Die für Schlüssel geltenden Rollen sind die gleichen Rollen, die für Benutzer in Ihrem Team gelten. Siehe Rollenberechtigungen. Wir empfehlen, App-Verwaltung auszuwählen.
7 — Klicken Sie auf Generieren
Der Zugriff eines API-Schlüssels kann nicht auf bestimmte Apps beschränkt werden
Der Name des neuen Schlüssels, die Schlüssel-ID, ein Download-Link und andere Informationen erscheinen auf der Seite
Hier können Sie alle drei notwendigen Informationen erhalten. <1> Aussteller-ID <2> Schlüssel-ID <3> Klicken Sie auf “API-Schlüssel herunterladen”, um Ihren privaten API-Schlüssel herunterzuladen. Der Download-Link erscheint nur, wenn der private Schlüssel noch nicht heruntergeladen wurde. Apple bewahrt keine Kopie des privaten Schlüssels auf. Sie können ihn also nur einmal herunterladen.
🔴 Bewahren Sie Ihren privaten Schlüssel an einem sicheren Ort auf. Sie sollten Ihre Schlüssel niemals teilen, in einem Code-Repository speichern oder in clientseitigen Code aufnehmen.
Verwendung eines App Store Connect API-Schlüssels
Die API-Schlüsseldatei (p8-Datei, die Sie herunterladen), die Schlüssel-ID und die Aussteller-ID werden benötigt, um den JWT-Token für die Autorisierung zu erstellen. Es gibt mehrere Möglichkeiten, wie diese Informationen in Fastlane eingegeben werden können, unter Verwendung der neuen Fastlane-Aktion app_store_connect_api_key
. Sie können andere Möglichkeiten in der Fastlane-Dokumentation erfahren.Ich zeige diese Methode, weil ich denke, dass es der einfachste Weg ist, mit den meisten CI-Systemen zu arbeiten, bei denen Sie Umgebungsvariablen setzen können.
Jetzt können wir Fastlane mit dem App Store Connect API-Schlüssel verwalten, großartig!
Zertifikate und Bereitstellungsprofile erstellen
Zertifikate
Öffnen Sie XCode und gehen Sie zu Einstellungen > Konten > Apple ID > Teams und wählen Sie Ihr Team aus.
Klicken Sie auf Zertifikate verwalten > + und wählen Sie Apple Distribution
Dann können Sie ein neues Zertifikat erstellen.
Anschließend müssen Sie zum Schlüsselbund gehen, um das Zertifikat als p12
-Datei herunterzuladen.
Dazu müssen Sie zum Schlüsselbund wechseln, den Anmelde-Schlüsselbund auswählen und dann den Tab Meine Zertifikate
Dann können Sie das Zertifikat auswählen, das Sie herunterladen möchten (Achten Sie auf das Datum des Zertifikats)
Klicken Sie dann mit der rechten Maustaste auf das Zertifikat und wählen Sie Exportieren
Wählen Sie das Dateiformat Persönlicher Informationsaustausch (p12)
Dadurch wird das Zertifikat als p12
-Datei heruntergeladen.
Bereitstellungsprofile
Öffnen Sie Apple Developer und wählen Sie das richtige Team aus.
Erstellen Sie dann ein neues Profil, indem Sie auf + klicken.
Und wählen Sie App Store Connect
Dann müssen Sie die richtige App auswählen, achten Sie darauf, dass Sie keine Platzhalter verwenden, sonst schlägt die Signierung fehl.
Wählen Sie das richtige Zertifikat aus, das Sie zuvor erstellt haben (achten Sie auf das Ablaufdatum, es sollte der gleiche Tag und Monat wie heute sein) und klicken Sie auf Weiter
Geben Sie schließlich den Namen des Profils ein und klicken Sie auf Generieren
Der Name wird verwendet, um das Profil in Fastlane zu identifizieren, unter dem Wert von
APPLE_PROFILE_NAME
Sie können das Profil als mobileprovision
-Datei herunterladen.
GitHub-Geheimnisse für Ihr Zertifikat und Bereitstellungsprofil erstellen
Der Signierungsprozess umfasst das Speichern von Zertifikaten und Bereitstellungsprofilen, deren Übertragung zum Runner, den Import in den Schlüsselbund des Runners und deren Verwendung in Ihrem Build.
Erstellen Sie Geheimnisse in Ihrem Repository oder Ihrer Organisation für die folgenden Elemente:
-
Ihr Apple-Signierzertifikat
-
Dies ist Ihre
p12
-Zertifikatsdatei. Weitere Informationen zum Exportieren Ihres Signierzertifikats aus Xcode finden Sie in der Xcode-Dokumentation -
Sie sollten Ihr Zertifikat in Base64 konvertieren, wenn Sie es als Geheimnis speichern. In diesem Beispiel heißt das Geheimnis
BUILD_CERTIFICATE_BASE64
-
Verwenden Sie den folgenden Befehl, um Ihr Zertifikat in Base64 zu konvertieren und in die Zwischenablage zu kopieren:
-
-
Das Passwort für Ihr Apple-Signierzertifikat
- In diesem Beispiel heißt das Geheimnis
P12_PASSWORD
- In diesem Beispiel heißt das Geheimnis
-
Ihr Apple-Bereitstellungsprofil
-
Weitere Informationen zum Exportieren Ihres Bereitstellungsprofils aus Xcode finden Sie in der Xcode-Dokumentation
-
Sie sollten Ihr Bereitstellungsprofil in Base64 konvertieren, wenn Sie es als Geheimnis speichern. In diesem Beispiel heißt das Geheimnis
BUILD_PROVISION_PROFILE_BASE64
-
Verwenden Sie den folgenden Befehl, um Ihr Bereitstellungsprofil in Base64 zu konvertieren und in die Zwischenablage zu kopieren:
-
2. Fastlane-Dateien kopieren
Fastlane ist eine Ruby-Bibliothek, die zur Automatisierung gängiger Aufgaben in der mobilen Entwicklung erstellt wurde. Mit Fastlane können Sie benutzerdefinierte “Lanes” konfigurieren, die eine Reihe von “Aktionen” bündeln, die Aufgaben ausführen, die Sie normalerweise mit Android Studio durchführen würden. Sie können viel mit Fastlane machen, aber für die Zwecke dieses Tutorials werden wir nur eine Handvoll Kernaktionen verwenden.Erstellen Sie einen Fastlane-Ordner im Hauptverzeichnis Ihres Projekts und kopieren Sie die folgenden Dateien: Fastfile
Build-Verarbeitung
In GitHub Actions werden Ihnen die Minuten in Rechnung gestellt, die Sie für die Ausführung Ihres CI/CD-Workflows verwendet haben. Erfahrungsgemäß dauert es etwa 10-15 Minuten, bis ein Build in App Store Connect verarbeitet werden kann.
Bei privaten Projekten können die geschätzten Kosten pro Build bis zu $0,08/Min x 15 Min = $1,2 oder mehr betragen, abhängig von der Konfiguration oder den Abhängigkeiten Ihres Projekts.
Wenn Sie wie ich Bedenken bezüglich der Preisgestaltung für private Projekte haben, können Sie skip_waiting_for_build_processing
auf true
belassen.
Was ist der Haken? Sie müssen die Compliance Ihrer App in App Store Connect manuell aktualisieren, nachdem der Build verarbeitet wurde, um den Build an Ihre Benutzer verteilen zu können.
Dies ist nur ein optionaler Parameter, den Sie aktualisieren können, wenn Sie bei privaten Projekten Build-Minuten sparen möchten. Bei kostenlosen Projekten sollte dies überhaupt kein Problem sein. Siehe Preisgestaltung
3. GitHub Actions einrichten
GitHub-Geheimnisse konfigurieren
Haben Sie sich jemals gefragt, woher die Werte der ENV
kommen? Nun, es ist kein Geheimnis mehr - sie kommen aus dem Geheimnis Ihres Projekts 🤦
-
APP_STORE_CONNECT_TEAM_ID
- die ID Ihres App Store Connect-Teams, wenn Sie in mehreren Teams sind -
PROVISIONING_PROFILE_SPECIFIER
-match AppStore <YOUR_APP_BUNDLE_IDENTIFIER>
, z.B.match AppStore com.domain.blabla.demo
-
BUILD_CERTIFICATE_BASE64
- Base64-codiertes Zertifikat -
BUILD_PROVISION_PROFILE_BASE64
- Base64-codiertes Bereitstellungsprofil -
BUNDLE_IDENTIFIER
- der Bundle-Identifier Ihrer App -
APPLE_KEY_ID
— App Store Connect API Key 🔺Key ID -
APPLE_ISSUER_ID
— App Store Connect API Key 🔺Issuer ID -
APPLE_KEY_CONTENT
— App Store Connect API Key 🔺 Schlüsselinhalt von p8, überprüfen Sie es
4. GitHub-Workflow-Datei konfigurieren
Erstellen Sie ein GitHub-Workflow-Verzeichnis
Erstellen Sie im Ordner workflow
eine Datei mit dem Namen build-upload-ios.yml
und fügen Sie Folgendes hinzu:
Dieser Workflow sollte nach jedem GitHub-Tag ausgelöst werden. Wenn Sie das Tagging automatisieren müssen, lesen Sie zuerst Automatischer Build und Release mit GitHub-Aktionen.
Dann wird dieser Workflow Ihre NodeJS-Abhängigkeiten abrufen, sie installieren und Ihre JavaScript-App erstellen.
Jedes Mal, wenn Sie einen neuen Commit senden, wird in TestFlight ein Release erstellt.
Ihre App muss nicht Ionic verwenden, nur Capacitor-Basis ist obligatorisch. Sie kann alte Cordova-Module haben, aber Capacitor JS-Plugins sollten bevorzugt werden.
5. Workflow auslösen
Commit erstellen
Machen Sie einen Commit, Sie sollten den aktiven Workflow im Repository sehen.
Workflow auslösen
Pushen Sie die neuen Commits in den Branch main
oder development
, um den Workflow auszulösen.
Nach einigen Minuten sollte der Build in Ihrem App Store Connect-Dashboard verfügbar sein.
Kann man von lokalem Rechner aus deployen?
Ja, das können Sie, und es ist mühelos.
Sie können Xcode verwenden, um Ihre App wie immer zu erstellen und zu signieren.
Danke
Dieser Blog basiert auf folgenden Artikeln: