Zur Übersicht

Mobile Apps: Effizientes Deployment mit fastlane

Michael Scharl
Michael Scharl Aktualisiert am 17. Aug. 2020
Deployment mit Fastlane - React Native

Automatisierte Releases sind für uns Developer eine grossartige Sache. Sie sparen Zeit, Nerven und man kann sicher sein, dass bei Deployments alle Schritte in der richtigen Reihenfolge ausgeführt werden. Wir erklären, wie wir mit der Open Source-Plattform fastlane mehr aus unseren Projekten rausholen.

Mit fastlane auf der Überholspur

Besonders wenn man grössere Projekte hat, in denen man nach der ersten Umsetzungsphase nicht – oder nicht mehr so oft – released, gerät der ideale Ablauf schnell in Vergessenheit. Auch eine Dokumentation gibt mir persönlich nicht dasselbe Gefühl, da man sich nie sicher sein kann, ob nicht eine Kleinigkeit geändert wurde. Wenn aber alles automatisch läuft, wird man gezwungen, neue oder veraltete Schritte im Script nachzuziehen.

Auf das richtige Environment setzen

Für Webprojekte lassen sich Deployments normalerweise sehr einfach einrichten. Zusammengefasst geht das so: Auf der CI-Maschine wird alles zusammengebaut und dann ab auf den Server! Wenn notwendig, wird noch die Datenbank migriert.

Gegen Automatisierung kommt auch die beste Dokumentation nicht an – fastlane gibt mir Sicherheit beim Durchführen von Releases. 

Michael Scharl
Senior Web Developer bei MASSIVE ART

Wie sieht es mit mobile Apps aus?

Für Android lassen sich ja zumindest die notwendigen Compiler Tools auf einem gewöhnlichen Linux System installieren. Aber bei iOS sieht das anders aus, denn Apple ist hier etwas einschränkender.

Keine automatisierten Deployments sind für uns aber absolut keine Option. Die Lösung? Wir haben einen CI-Runner auf einem macOS System, also ein MacBook, das ausschliesslich für diesen Zweck verwendet wird. Mithilfe der Gitlab-Dokumentation konnten wir dies in wenigen Minuten einrichten.

Das mussten wir allerdings gleich zweimal machen, da wir auf eine kleine Besonderheit gestossen sind, die es zu beachten gilt: Xcode ist nicht immer gleich Xcode. Unser erster CI-Runner lief auf einem etwas älterem Mac, auf dem sich nicht mehr die aktuellste Version von Xcode installieren lässt. Wir konnten zwar alles fehlerlos kompilieren, aber manche UI-Elemente wurden dann auf den iOS 13 so dargestellt wie auf iOS 12. Also musste ein neuerer Mac her. Dann hat auch die UI so gespielt wie wir es wollten.

Nachdem das Environment aufgesetzt ist, muss definiert werden was ausgeführt werden muss, damit wir am Ende die Binaries in den entsprechenden Vertriebsportalen freigeben können. Dazu kann ich jedem empfehlen fastlane zu verwenden. Vor bald sechs Jahren wurde das Tool von einem Österreicher ins Leben gerufen. Es gehört mittlerweile zu Google und wird von der Open Source Community fleissig weiterentwickelt.

Deployment mit Fastlane - Flowchart
fastlane bietet viele Funktionen, um Apps für den Release Prozess vorzubereiten und den Freigabeprozess automatisiert zu gestalten.

fastlane als Basis für den Release-Prozess

fastlane bietet uns viele kleine Funktionen, um unsere App für den Release Prozess vorzubereiten, Code-Signing durchzuführen und in den App Store/Google Play Store hochzuladen. Auch der Freigabeprozess kann mit hinterlegten Informationen automatisch gestartet werden. Selbst Benachrichtigungen via Slack sind von Haus aus machbar. Wenn man der – meiner Meinung nach sehr guten – Dokumentation folgt, lässt sich die Pipeline für Testflight und Interne sowie Production Builds schnell aufbauen.

Dokumentationen beachten macht Sinn

Der Aufbau ging also dank Dokumentation recht rasch. Nur am Code-Signing für die iOS Builds sind wir etwas gehangen. Meine ersten Versuche, Zertifikate ins Projekt zu integrieren haben nur spärlich funktioniert. Wenn man fastlane lokal ausführt und nichts Spezielles konfiguriert, wird man zu Beginn im Apple Portal eingeloggt und fastlane zieht sich automatisch die notwendigen Zertifikate vom Server. Wenn das aber auf einer CI-Maschine passiert, funktioniert das nicht. Was tun? Ich beschloss, auf Empfehlung von fastlane, “match” zu verwenden. Hätte ich von Anfang an der Dokumentation geglaubt und nicht versucht mein eigenes Ding zu machen, wäre auch das ein wenigen Minuten fertig gewesen.

Ein Klick und eine finale Freigabe

Das erste Setup hat uns zwar etwas mehr Zeit gekostet, aber die haben wir schon längst wieder zurückgewonnen! Die Vorteile der Arbeit mit fastlane liegen nämlich auf der Hand: Keiner muss seinen Rechner opfern und diverse Tools installieren, Compiler starten, warten bis alles durch ist und dann auch noch alles per Hand hochladen. Auch gut: Die Builds sind unabhängig vom jeweiligen Rechner des Entwicklers, alles wir konstant mit gleicher Hard- und Software erstellt. Und so reicht am Schluss ein einziger Knopfdruck in der CI! Wenn alles fertig ist, werden wir via Slack automatisch benachrichtigt, um die finale Freigabe durchzuführen.

Sie haben auch schon Erfahrungen mit fastlane gemacht? Tauschen wir uns aus und lernen wir alle davon.

MASSIVE-ART_Michael_Scharl_640x640_circle
Michael Scharl
Technischer Projektmanager & Senior Web Developer
Michael hat als Senior Web Developer bei MASSIVE ART begonnen und ist jetzt technischer Projektmanager. Er ist Experte für Frontend-Entwicklung und dem dazugehörigen Toolset. Michael ist der Meister der Automatisierung, denn er mag es nicht, wenn er immer dieselben Abläufe wiederholen muss und vereinfacht so nicht nur seinen Alltag, sondern auch den seiner Kollegen. Nach Feierabend geht Michael zum Kampfsport oder raus in die Natur – Hauptsache es kommt keine Langeweile auf!