Veröffentlichen von iOS-Anwendungen im App Store mit GitLab und Fastlane

Veröffentlichen von iOS-Anwendungen im App Store mit GitLab und Fastlane

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

Wir hatten vor kurzem Beitrag darüber, wie man schnell eine Android-Anwendung erstellt und ausführt mit GitLab und Überholspur. Hier erfahren Sie, wie Sie eine iOS-App erstellen, ausführen und auf TestFlight veröffentlichen. Schauen Sie sich an, wie cool es ist Ich nehme eine Änderung auf einem iPad Pro mit der GitLab-Web-IDE vor, nehme ich die Baugruppe und erhalte ein Update auf die Testversion der Anwendung auf demselben iPad Pro, auf dem ich sie entwickelt habe.

Hier werden wir nehmen einfache iOS-App auf Swift, mit dem ich das Video aufgenommen habe.

Ein paar Worte zur Apple Store-Konfiguration

Wir benötigen eine App Store-App, Vertriebszertifikate und ein Bereitstellungsprofil, um alles miteinander zu verbinden.

Das Schwierigste hierbei ist die Einrichtung der Signierrechte im App Store. Ich hoffe, Sie können das selbst herausfinden. Wenn Sie neu sind, weise ich Sie in die richtige Richtung, aber wir werden hier nicht über die Feinheiten der Verwaltung von Apple-Zertifikaten sprechen, und diese ändern sich ständig. Dieser Beitrag wird Ihnen den Einstieg erleichtern.

Meine Applikationen

Sie benötigen eine App im App Store Connect, damit Sie eine ID für die Konfiguration haben .xcodebuild. Das Profil und die Anwendungs-ID kombinieren Code-Builds, Preise und Verfügbarkeit sowie die TestFlight-Konfiguration für die Verteilung von Testanwendungen an Benutzer. Führen Sie keine öffentlichen Tests durch. Private Tests reichen aus, wenn Sie eine kleine Gruppe haben, die Einrichtung einfach ist und keine zusätzlichen Berechtigungen von Apple benötigen.

Initialisierungsprofil

Zusätzlich zum App-Setup benötigen Sie iOS-Verteilungs- und Entwicklungsschlüssel, die im Abschnitt „Zertifikate, Kennungen und Profile“ der Apple Developer Console erstellt wurden. Alle diese Zertifikate können zu einem Bereitstellungsprofil zusammengefasst werden.

Benutzer, die authentifiziert werden, müssen in der Lage sein, Zertifikate zu erstellen, andernfalls sind die Schritte erforderlich Zertifikat und Seufz Sie werden einen Fehler sehen.

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 sich möglicherweise anpassen. Das Wichtigste ist, dass Sie eine Konfiguration benötigen .xcodebuild, das auf die erforderlichen Dateien verweist, und der Schlüsselbund muss auf dem Build-Computer für den Benutzer verfügbar sein, unter dessen Namen der Runner ausgeführt wird. Für die digitale Signatur verwenden wir Fastlane. Wenn es Probleme gibt oder Sie mehr wissen möchten, schauen Sie sich deren Details an Dokumentation über digitale Signaturen.

In diesem Beispiel verwende ich den Ansatz Zertifikat und Seufz, aber für den echten Einsatz ist es wahrscheinlich besser geeignet Spiel.

GitLab und Fastlane vorbereiten

CI Runner vorbereiten

Nachdem wir alle diese Daten gesammelt haben, fahren wir mit der Konfiguration des GitLab-Runners auf dem MacOS-Gerät fort. Leider können Sie iOS-Apps nur auf MacOS erstellen. Aber alles kann sich ändern, und wenn Sie Fortschritte in diesem Bereich erwarten, behalten Sie Projekte wie … im Auge xcbuild и Zeichen, und unsere interne Aufgabe gitlab-ce#57576.

Der Aufbau des Läufers ist sehr einfach. Folgen Sie dem Strom Anweisungen zum Einrichten von GitLab Runner unter macOS.

Notiz. Der Läufer muss ein ausführbares Programm verwenden shell. Dies ist erforderlich, um iOS auf macOS zu erstellen, damit es direkt als Benutzer und nicht über Container funktioniert. Wenn Sie verwenden shellErstellen und Testen werden als Runner-Benutzer direkt auf dem Build-Host durchgeführt. Es ist nicht so sicher wie Container, also stöbern Sie besser Sicherheitsdokumentationdamit 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

Auf diesem Host muss der Apple-Schlüsselbund mit Zugriff auf die Schlüssel konfiguriert werden, die Xcode erstellen muss. Der einfachste Weg, dies zu testen, besteht darin, sich als der Benutzer anzumelden, der den Build ausführen wird, und zu versuchen, ihn manuell zu erstellen. Wenn das System nach Schlüsselbundzugriff fragt, wählen Sie „Immer zulassen“, damit CI funktioniert. Es könnte sich lohnen, hineinzugehen und die ersten paar Pipelines zu beobachten, um sicherzustellen, dass sie nicht mehr nach dem Schlüsselbund fragen. Das Problem ist, dass Apple es uns nicht leicht macht, den Auto-Modus zu verwenden, aber sobald Sie ihn in Betrieb nehmen, wird alles gut.

Fastlane Init

Um Fastlane in einem Projekt zu verwenden, führen Sie Folgendes aus: fastlane init. Folge einfach Anweisungen zur Installation und Ausführung von Fastlane, insbesondere im Abschnitt darüber Gemfile, weil wir einen schnellen und vorhersehbaren Start über eine automatisierte CI-Pipeline benötigen.

Führen Sie in Ihrem 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 einer Grundkonfiguration und erstellt dann im Projekt einen Fastlane-Ordner mit drei Dateien:

1. fastlane/Appfile

Hier gibt es nichts Kompliziertes. Stellen Sie einfach sicher, dass Ihre Apple-ID und App-ID korrekt sind.

app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address

2. fastlane/Fastfile

Fastfile definiert die Build-Schritte. Wir nutzen viele integrierte Fastlane-Funktionen, sodass auch hier alles klar ist. Wir erstellen eine Zeile, die Zertifikate empfängt, die Montage durchführt und sie auf TestFlight hochlädt. Bei Bedarf können Sie diesen Prozess in verschiedene Aufgaben unterteilen. Alle diese Operationen (get_certificates, get_provisioning_profile, gym и upload_to_testflight) sind bereits in Fastlane enthalten.

Aktionen get_certificates и get_provisioning_profile im Zusammenhang mit dem Signierungsansatz Zertifikat und Seufz. Wenn Sie verwenden Spiel oder was auch immer, nehmen Sie Änderungen 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 im aktuellen Ordner zu platzieren. Dies vereinfacht CI. Wenn Sie interessiert sind, lesen Sie weiter gym und seine Parameter in Dokumentation.

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

Unsere .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 haben .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! Das Format stellen wir für fastlane nach Bedarf auf UTF-8 ein, Strategie verwenden clone mit ausführendem Programm shell, damit wir für jede Baugruppe einen sauberen Arbeitsbereich haben und einfach anrufen flappybuild Fastlane, wie oben zu sehen. Als Ergebnis erhalten wir die Assembly, Signatur und Bereitstellung der neuesten Assembly in TestFlight.

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

Andere Umgebungsvariablen

Hier gibt es ein paar Umgebungsvariablen, die dafür sorgen, dass alles funktioniert.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Zur Authentifizierung im App Store und zum Hochladen auf TestFlight ist eine Authentifizierung für Fastlane erforderlich. Erstellen Sie dazu ein Passwort für die Anwendung, die in CI verwendet wird. Einzelheiten hier.

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

FASTLANE_USER и FASTLANE_PASSWORD

Dass Zertifikat und Seufz Wenn Sie das Initialisierungsprofil und die Zertifikate auf Anfrage aufrufen, müssen Sie die Variablen festlegen FASTLANE_USER и FASTLANE_PASSWORD. Einzelheiten hier. Dies ist nicht erforderlich, wenn Sie eine andere Signierungsmethode verwenden.

Abschließend

Sie können sehen, wie das alles funktioniert in meinem einfachen Beispiel.

Ich hoffe, das war hilfreich und hat Sie dazu inspiriert, in einem GitLab-Projekt mit iOS-Builds zu arbeiten. Hier ist ein anderes CI-Tipps für Fastlane, nur für den Fall. Vielleicht möchten Sie es verwenden CI_BUILD_ID (für inkrementelle Builds) bis Version automatisch erhöhen.

Ein weiteres cooles Feature von Fastlane ist automatische Screenshots für den App Store, die sehr einfach einzurichten sind.

Erzählen Sie uns in den Kommentaren von Ihren Erfahrungen und teilen Sie Ihre Ideen zur Verbesserung von GitLab für die iOS-App-Entwicklung.

Source: habr.com

Kommentar hinzufügen