Mobile Apps: Effizientes Deployment mit fastlane
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.
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.
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.