Veröffentlichen Sie iOS-Apps im App Store mit GitLab und Fastlane


Wie GitLab mit Fastlane iOS-Apps im App Store sammelt, signiert und veröffentlicht.


Wir hatten kürzlich einen Beitrag darüber, wie man schnell eine Android-Anwendung mit GitLab und Fastlane erstellt und ausführt . Hier erfahren Sie, wie Sie eine iOS-Anwendung erstellen, ausführen und in TestFlight veröffentlichen. Überprüfen Sie, wie cool ich mit der GitLab Web IDE Änderungen am iPad Pro vornehme , den Build übernehme und ein Update der Testversion der Anwendung auf demselben iPad Pro erhalte, auf dem ich sie entwickelt habe.


Hier nehmen wir eine einfache iOS-App auf Swift, mit der ich ein Video aufgenommen habe.


Ein paar Worte zur Konfiguration des Apple Store


Wir benötigen eine App im App Store, Verteilungszertifikate und ein Initialisierungsprofil, um alles miteinander zu verbinden.


Am schwierigsten ist es hier, die Signaturrechte im App Store zu konfigurieren. Ich hoffe, Sie können es selbst herausfinden. Wenn Sie ein Anfänger sind, werde ich Sie in die richtige Richtung weisen, aber hier werden wir nicht über die Feinheiten der Verwaltung von Apple-Zertifikaten sprechen, und sie ändern sich ständig. Mit diesem Beitrag können Sie loslegen.


Meine Bewerbungen


Sie benötigen eine App im App Store Connect, damit Sie eine ID für die .xcodebuild Konfiguration haben. Das Profil und die Anwendungs-ID kombinieren Code-Assemblierung, Preisgestaltung und Verfügbarkeit sowie die TestFlight-Konfiguration zum Verteilen von Testanwendungen an Benutzer. Führen Sie keine öffentlichen Tests durch. Privat ist ausreichend, wenn Sie eine kleine Gruppe haben, einfach eingerichtet sind und keine zusätzlichen Berechtigungen von Apple benötigen.


Initialisierungsprofil


Zusätzlich zum Anwendungssetup benötigen Sie die iOS-Verteilungs- und Entwicklungsschlüssel, die im Abschnitt Zertifikate, Kennungen und Profile der Apple Developer Console erstellt wurden. Alle diese Zertifikate können in einem Initialisierungsprofil kombiniert werden.


Authentifizierungsbenutzer müssen in der Lage sein, Zertifikate zu erstellen. Andernfalls wird in den Schritten "Zertifikat" und "Seufzen" ein Fehler angezeigt .


Andere Optionen


Neben dieser einfachen Methode gibt es noch andere Möglichkeiten, Zertifikate und Profile zu konfigurieren. Wenn Sie also anders arbeiten, müssen Sie möglicherweise neu erstellen. Am wichtigsten ist, dass Sie die .xcodebuild Konfiguration benötigen, die auf die erforderlichen Dateien .xcodebuild , und der Schlüsselbund sollte auf dem Build-Computer für den Benutzer verfügbar sein, unter dessen Namen der Runner arbeitet. Wir verwenden Fastlane für digitale Signaturen. Wenn es Probleme gibt oder Sie mehr wissen möchten, lesen Sie die ausführliche Dokumentation zu digitalen Signaturen .


In diesem Beispiel verwende ich den Cert- und Seufzer-Ansatz , aber für eine echte Anwendung ist die Übereinstimmung wahrscheinlich besser.


GitLab und Fastlane vorbereiten


CI Runner vorbereiten


Nachdem wir alle diese Daten gesammelt haben, fahren wir mit der Konfiguration des GitLab-Läufers auf dem MacOS-Gerät fort. Leider ist das Erstellen von iOS-Apps nur unter MacOS real. Aber die Dinge können sich ändern, und wenn Sie auf Fortschritte in diesem Bereich warten, behalten Sie Projekte wie xcbuild und isign sowie unsere interne Aufgabe, gitlab-ce # 57576, im Auge .


Das Einrichten eines Läufers ist sehr einfach. Befolgen Sie die aktuellen Anweisungen zum Einrichten von GitLab Runner unter macOS .


Hinweis Der Läufer muss die ausführbare shell Datei verwenden. Dies ist erforderlich, um iOS unter macOS zu erstellen, damit Sie direkt als Benutzer und nicht über Container arbeiten können. Wenn Sie eine shell , werden Assembly und Test im Auftrag des Runner-Benutzers direkt auf dem Assembly-Host ausgeführt. Es ist nicht so sicher wie Container. Scrollen Sie daher am besten durch die Sicherheitsdokumentation, damit Sie nichts verpassen.


 sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64 sudo chmod +x /usr/local/bin/gitlab-runner cd ~ gitlab-runner install gitlab-runner start 

Der Apple-Schlüsselbund muss auf diesem Host mit Zugriff auf die Schlüssel konfiguriert sein, die Xcode erstellen muss. Der einfachste Weg, dies zu testen, besteht darin, sich als Benutzer anzumelden, der den Build startet, und zu versuchen, manuell zu erstellen. Wenn das System den Zugriff auf den Schlüsselbund anfordert, wählen Sie Immer zulassen, dass CI funktioniert. Es kann sich lohnen, das erste Paar Pipelines zu betreten und zu beobachten, um sicherzustellen, dass sie nicht mehr nach einem Schlüsselbund fragen. Das Problem ist, dass Apple es uns nicht einfacher macht, mit dem automatischen Modus zu arbeiten, aber wenn Sie das Problem beheben, ist alles in Ordnung.


Fastlane Init


Führen Sie fastlane init um fastlane in einem Projekt zu fastlane init . Befolgen Sie einfach die Anweisungen zum Installieren und Starten von Fastlane , insbesondere im Abschnitt Gemfile , da wir einen schnellen und vorhersehbaren Start über die automatische CI-Pipeline benötigen.


Führen Sie im Projektverzeichnis die folgenden Befehle aus:


 xcode-select --install sudo gem install fastlane -NV # Alternatively using Homebrew # brew cask install fastlane fastlane init 

Fastlane fragt nach der Grundkonfiguration und erstellt dann im Projekt einen Fastlane-Ordner mit drei Dateien:


1. fastlane/Appfile


Hier ist nichts kompliziert. Stellen Sie einfach sicher, dass die Apple ID und die Anwendungs-ID korrekt sind.


 app_identifier("com.vontrance.flappybird") # The bundle identifier of your app apple_id("your-email@your-domain.com") # Your Apple email address 

2. fastlane/Fastfile


Fastfile definiert Build-Schritte. Wir verwenden viele integrierte Fastlane-Funktionen, sodass auch hier alles klar ist. Erstellen Sie eine Zeile, die Zertifikate empfängt, erstellt und in TestFlight lädt. Sie können diesen Prozess bei Bedarf in verschiedene Aufgaben unterteilen. Alle diese Vorgänge ( get_certificates , get_provisioning_profile , gym und upload_to_testflight ) sind bereits in fastlane enthalten.


Die get_provisioning_profile get_certificates und get_provisioning_profile beziehen sich auf den Signieransatz für Zertifikate und Seufzer . Wenn Sie Match oder etwas anderes verwenden, nehmen Sie eine Änderung vor.


 default_platform(:ios) platform :ios do desc "Build the application" lane :flappybuild do get_certificates get_provisioning_profile gym upload_to_testflight end end 

3. fastlane/Gymfile


Dies ist eine optionale Datei, aber ich habe sie manuell erstellt, um das Standardausgabeverzeichnis zu ändern und die Ausgabe in den aktuellen Ordner zu legen. Dies vereinfacht CI. Bei Interesse lesen Sie in der Dokumentation mehr über das gym und seine Parameter.


 https://docs.fastlane.tools/actions/gym/ 

Unser .gitlab-ci.yml


Wir haben also einen CI-Läufer für das Projekt und sind bereit, die Pipeline zu testen. Mal sehen, was wir in .gitlab-ci.yml :


 stages: - build variables: LC_ALL: "en_US.UTF-8" LANG: "en_US.UTF-8" GIT_STRATEGY: clone build: stage: build script: - bundle install - bundle exec fastlane flappybuild artifacts: paths: - ./FlappyBird.ipa 

Alles in Ordnung ist! Wir legen das UTF-8-Format für Fastlane nach Bedarf fest , verwenden die Klonstrategie mit der ausführbaren shell Datei, sodass wir für jede Assembly einen sauberen Arbeitsbereich haben, und rufen einfach flappybuild Fastlane auf, wie oben dargestellt. Als Ergebnis erhalten wir die Assembly, Signatur und Bereitstellung der letzten Assembly in TestFlight.


Wir bekommen auch das Artefakt und speichern es mit der Baugruppe. Beachten Sie, dass das .ipa Format eine signierte ARM-ausführbare Datei ist, die nicht im Simulator ausgeführt wird. Wenn Sie die Ausgabe für den Simulator wünschen, fügen Sie einfach das Assembly-Ziel hinzu, das sie erzeugt, und fügen Sie sie dann in den Pfad zum Artefakt ein.


Andere Umgebungsvariablen


Es gibt einige Umgebungsvariablen, mit denen alles funktioniert.


FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD und FASTLANE_SESSION


Für die Authentifizierung im App Store und das Hochladen auf TestFlight ist eine Authentifizierung für Fastlane erforderlich. Erstellen Sie dazu ein Kennwort für die Anwendung, die in CI verwendet wird. Details hier .


Wenn Sie über eine Zwei-Faktor-Authentifizierung verfügen, erstellen Sie die Variable FASTLANE_SESSION (Anweisungen dort).


FASTLANE_USER und FASTLANE_PASSWORD


Damit cert und seufzen das Initialisierungsprofil und die Zertifikate bei Bedarf FASTLANE_USER FASTLANE_PASSWORD , müssen die Variablen FASTLANE_USER und FASTLANE_PASSWORD festgelegt werden. Details hier . Dies ist nicht erforderlich, wenn Sie eine andere Signaturmethode verwenden.


Abschließend


Wie das alles funktioniert, sehen Sie in meinem einfachen Beispiel .


Ich hoffe, das war hilfreich und ich habe Sie dazu inspiriert, mit iOS-Builds im GitLab-Projekt zu arbeiten. Hier sind einige weitere CI-Tipps für Fastlane, nur für den Fall. Möglicherweise möchten Sie CI_BUILD_ID (für inkrementelle Builds) verwenden, um die Version automatisch zu CI_BUILD_ID .


Eine weitere coole Funktion von Fastlane sind automatische Screenshots für den App Store, die sehr einfach einzurichten sind.


Teilen Sie Ihre Erfahrungen in den Kommentaren mit und teilen Sie Ideen zur Verbesserung der Entwicklung von GitLab für iOS-Apps.

Source: https://habr.com/ru/post/de444170/


All Articles