Wie GitLab mit Fastlane iOS-Anwendungen sammelt, signiert und im App Store veröffentlicht.
Wir hatten vor kurzem
Hier werden wir nehmen
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
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
In diesem Beispiel verwende ich den Ansatz
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
Der Aufbau des Läufers ist sehr einfach. Folgen Sie dem Strom
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 shell
Erstellen 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
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
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
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
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! 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
Wenn Sie über eine Zwei-Faktor-Authentifizierung verfügen, erstellen Sie eine Variable FASTLANE_SESSION
(Anleitung dort).
FASTLANE_USER
и FASTLANE_PASSWORD
Dass FASTLANE_USER
и FASTLANE_PASSWORD
. Einzelheiten
Abschließend
Sie können sehen, wie das alles funktioniert
Ich hoffe, das war hilfreich und hat Sie dazu inspiriert, in einem GitLab-Projekt mit iOS-Builds zu arbeiten. Hier ist ein anderes CI_BUILD_ID
(für inkrementelle Builds) bis
Ein weiteres cooles Feature von Fastlane ist
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