Fastlane: iOS-Automatisierung auf Tempomat
Veröffentlicht: 2022-03-11Bei der Entwicklung von Software für iOS geht es nicht nur darum, Objective-C- oder Swift-Code zu schreiben: Es geht darum, zu wissen, wie UIKit funktioniert, wie Zertifikate erstellt werden, wie man seine App im Store veröffentlicht, wie man mit App-Bewertungen umgeht und vieles mehr. Wenn Sie diese ewige Aufgabenliste ermüdend finden, ist etwas Automatisierung in Ihrem Workflow genau das, was Sie brauchen.
Lernen Sie Fastlane kennen, das Tool, mit dem Sie bei jeder Bereitstellung Minuten oder sogar Stunden einsparen können.
Fastlane hilft Ihnen, den Prozess des Sendens von Beta-Builds an Crashlytics, TestFlight, den App Store und vieles mehr zu automatisieren.
In diesem Artikel erfahren Sie, wie Sie mit Fastlane den Workflow für die Bereitstellung Ihrer iOS-App automatisieren können. Obwohl wir uns auf den iOS-Aspekt dieses Tools konzentrieren werden, funktioniert Fastlane genauso gut für die Android-Entwicklungsautomatisierung.
Erste Schritte mit Fastlane
Es gibt mehrere Installationsmethoden, zwischen denen Sie wählen können, je nachdem, was Sie am einfachsten finden. Wenn Sie Homebrew installiert und konfiguriert haben, ist für die Installation von Fastlane nur ein Befehl erforderlich:
brew cask install fastlane
Ansonsten ist gem
, da Fastlane ein Ruby-basiertes Tool ist, immer eine Option:
sudo gem install fastlane -NV
Oder Sie können Fastlane jederzeit von der offiziellen Website herunterladen.
Führen Sie nach der Installation von Fastlane fastlane init
in Ihrem Projektverzeichnis aus und folgen Sie den Anweisungen.
Bereitstellungsautomatisierung
Wenn Fastlane installiert ist, können Sie jetzt Ruby-Skripts schreiben, um Schritt für Schritt anzugeben, was Sie tun müssen, um Ihre Bereitstellung an den gewünschten Ort zu bringen. Dies geschieht mithilfe von Aktionen, Werkzeugen und Bahnen.
Fastlane-Tools, -Aktionen und -Plugins
Fastlane arbeitet mit Tools im Kern, die Ihnen beim Erstellen Ihrer App helfen. Zusätzlich zu den Build-Tools gibt es über 170 integrierte Integrationen mit Diensten wie Crashlytics, HockeyApp, TestFlight und weiteren Plugins, die von Drittanbietern erstellt und veröffentlicht werden, damit Sie sich mit anderen Diensten und mehr verbinden können.
Im Kern erhalten Sie die wichtigsten Tools, mit denen Sie eine Vielzahl von Aufgaben erledigen können: Von der Erstellung automatischer Screenshots über das Framing und Hochladen in den Store können Sie alle Ihre Tests automatisch ausführen, bevor Sie die App erstellen.
Aktionen sind die Kernwerkzeuge von Fastlane, und Plugins sind eine Möglichkeit, Aktionen von Drittanbietern zu Ihrem Fastlane-Setup hinzuzufügen.
Bahnen
Fastlane verwendet Bahnen, die im Wesentlichen eine Liste von Aktionen oder Plugins nacheinander gruppieren, sodass Sie jedes Mal das gleiche Ergebnis erzielen können.
Beim Ausführen einer Bahn exportiert jede Aktion eine Umgebungsvariable, und die folgenden Aktionen erhalten diese Variablen automatisch, um den Prozess am Laufen zu halten. Beispielsweise führt die Verwendung der gym
-Aktion dazu, dass der Pfad der .ipa
-Datei generiert wird, und die Verwendung von crashlytics
auf diesen .ipa
Speicherort zu, um diese Datei in sein Beta-Service-Verteilungssystem hochzuladen.
Verwenden von Fastlane mit iOS
Sie beginnen mit einem neuen Toptal-Kunden, der eine sehr einfache App möchte. Das Design ist bereits fertig und die App kann in wenigen Wochen programmiert werden. Der nächste Schritt besteht darin, mit dem Codieren zu beginnen, und während des Iterationsprozesses senden Sie dem Kunden alle paar Wochen eine Beta-App, damit er Ihren Fortschritt sehen und Ihnen Feedback darüber geben kann, wie die Dinge funktionieren.
Jedes Mal, wenn Sie eine Beta-Version an den Client senden, gehen Sie eine grundlegende Checkliste durch: Signieren der App, Hochladen auf einen Beta-Dienst, Hinzufügen einer neuen Version usw. Fügen Sie dazu die Dinge hinzu, die Sie tun müssen einmal (jedes Jahr): Signieren von Zertifikaten, Signieren von Push-Benachrichtigungszertifikaten (falls erforderlich) und mehr.
Mit Fastlane kann all dies jetzt automatisch geschehen!
Senden an Crashlytics Beta
Beispielsweise müssen Sie Signaturzertifikate und Bereitstellungsprofile erstellen, um Ihre App über Crashlytics Beta freizugeben.
Fastlane hat eine Aktion namens match
, die, sobald Sie sie eingerichtet haben, Folgendes tut:
- Erstellen Sie Verteilungssignaturzertifikate.
- Erstellen Sie ein Ad-hoc-Bereitstellungsprofil (an das Zertifikat von Nr. 1 angehängt).
- Speichern Sie das Zertifikat und das Profil von Nr. 1 und Nr. 2 in einem Git-Repository, verschlüsselt mit OpenSSL.
Die Einrichtung ist einfach.
Führen fastlane match init
aus, um zu beginnen, und rufen Sie nach dem Einrichten Ihres Git-Repositorys einfach fastlane match adhoc
auf, um ein Ad-hoc-Bereitstellungsprofil zu erhalten, oder führen fastlane match appstore
, um ein App Store-Zertifikat zu erhalten.

Vorteile der Verwendung von match
sind, dass Sie die Zertifikate sehr einfach zwischen Computern – und zwischen Teamkollegen – synchronisieren können, ohne die Zertifikate mehr widerrufen zu müssen, und die Geschwindigkeit, die Sie gewinnen. Wenn Sie fastlane match appstore
erhalten Sie in wenigen Sekunden ein Zertifikat.
Nun, jetzt haben wir die Zertifikate und Bereitstellungen, die wir brauchen, machen wir eine Veröffentlichung für Crashlytics.
Ein typischer Workflow zum Einreichen Ihrer App an Crashlytics von Fabric umfasst die folgenden Schritte:
- Erstellen Sie die Verteilungssignaturzertifikate.
- Erstellen Sie ein Ad-hoc-Bereitstellungsprofil (an das Zertifikat von Nr. 1 angehängt).
- Richten Sie Ihre App so ein, dass sie das Bereitstellungsprofil aus Nr. 2 verwendet.
- Archivieren Sie Ihre App.
- Öffnen Sie Fabric und folgen Sie den Schritten, um die App an Betatester zu senden.
Fastlane ersetzt die lästige Pflicht durch Folgendes:
platform :ios do lane :beta do match(type: “adhoc”) gym crashlytics end end
Wenn Sie nun fastlane beta
von Ihrem Terminal ausführen, wird dieses Skript gestartet.
Dadurch wird zuerst match
aufgerufen, eine Aktion, die das Erstellen und Aktualisieren von Signaturzertifikaten und Bereitstellungsprofilen übernimmt, dann wird gym
aufgerufen, eine Aktion, die die App für Sie erstellt und verpackt, wobei dieselben zuvor erstellten Zertifikate und Profile verwendet werden, und schließlich crashlytics
Ich nehme diese signierte .ipa
-Datei und lade sie zum Crashlytics-Dienst hoch.
Alle diese Schritte werden immer in der gleichen Reihenfolge aufgerufen, wodurch die resultierende Datei vorhersehbarer wird und Fehler reduziert werden.
MacBook-Pro:TestProject user$ fastlane beta +------+-------------------------------------+-------------+ | fastlane summary | +------+-------------------------------------+-------------+ | Step | Action | Time (in s) | +------+-------------------------------------+-------------+ | 1 | Verifying required fastlane version | 0 | | 2 | match | 57 | | 3 | gym | 592 | | 4 | crashlytics | 195 | +------+-------------------------------------+-------------+ [20:25:13]: fastlane.tools just saved you 14 minutes!
Das war also eine grundlegende Einrichtung zum Ausführen von Fastlane, um Ihre App an Crashlytics zu senden. Was können wir noch automatisieren?
Erhöhen von Build-Versionen
Wir können zum Beispiel festlegen, dass wir jedes Mal, wenn wir eine Beta senden, die Build-Versionsnummer erhöhen möchten.
Dies kann mit einer Aktion namens increment_build_number
erreicht werden, die von einem Terminal durch fastlane run increment_build_number
oder inline in unserer Betaspur verwendet werden kann:
platform :ios do lane :beta do increment_build_number match(type: “adhoc”) gym crashlytics end end
Glückwünsche! Sie haben jetzt ein automatisiertes Bereitstellungsskript, das auch Ihre Build-Versionsnummer erhöht. Der einzige Vorbehalt ist, dass Sie, sobald Sie diese Lane aufrufen, Dateien in Ihrem Projekt ändern werden (oder zumindest diejenigen, die die Build-Nummer enthalten).
Falls Sie diese Änderung sowieso in das Repository übertragen wollten, gibt es dafür eine Aktion: commit_version_bump
. Diese Aktion schreibt die Dateien mit der neuen Versionsnummer fest.
platform :ios do lane :beta do increment_build_number match(type: "adhoc") gym crashlytics commit_version_bump( xcodeproj:"myProject.xcodeproj", ) end end
Dadurch werden Dateien mit einer Commit-Nachricht wie dieser „Version Bump to 27“ übertragen.
Crashlytics zu TestFlight
Nun, wenn Sie so weit gekommen sind, können Sie in sehr kurzer Zeit eine automatisierte Bereitstellung für Crashlytics durchführen, die Ihnen auf lange Sicht unzählige Stunden sparen wird. Das Beste daran ist, wenn Sie Ihre App stattdessen an TestFlight senden möchten, müssen Sie nur crashlytics
in pilot
ändern.
Oder Sie können dafür eine separate Lane erstellen:
platform :ios do lane :beta-testflight do increment_build_number match(type: "adhoc") gym pilot commit_version_bump( xcodeproj:"myProject.xcodeproj", ) end end
iOS-Automatisierung leicht gemacht
Fastlane ist einfach und leicht zu bedienen. Aber es bringt einen erstaunlichen Wert für Ihren regulären iOS-Entwicklungsworkflow, indem es Sie vor niederen Dingen und Stunden Ihrer Zeit bewahrt, die Sie sonst verschwendet hätten.
Ich hoffe, Sie finden diese Einführung in Fastlane hilfreich. Sie können die offizielle Dokumentation lesen, um mehr über Fastlane zu erfahren, insbesondere die Liste der Aktionen, wenn Sie nach Inspiration suchen, was Sie für Ihre aktuellen und nächsten iOS-Projekte automatisieren könnten.