© Zhitkov Boris/Shutterstock.com
Mit Jenkins, fastlane und Git zu besserer Software

Continuous Delivery für iOS-Projekte


Dieser Artikel gibt einen Einblick in eine mögliche Toolchain für Continuous Integration und Continuous Delivery im Kontext von iOS-Projekten. Es wird gezeigt, wie Jenkins, fastlane, Git und Xcode zusammenspielen können, um den Entwicklern möglichst viel Arbeit abzunehmen und gleichzeitig die Codequalität zu verbessern.

Niemand wird bezweifeln, dass CI/CD heutzutage eine wichtige Rolle in der Softwareentwicklung spielt. Die iOS-Entwicklung ist dabei keine Ausnahme. Eine App kann jedes Mal automatisch getestet werden, wenn es einen neuen Commit gibt oder zwei Branches zusammengeführt werden sollen. Es ist auf diesem Weg genauso einfach, eine neue Version für Alpha- und Betatester bereitzustellen oder im App Store zu veröffentlichen.

Es gibt viele Tools und Plattformen, die dabei helfen, eine CI/CD Pipeline aufzubauen. Was hier vorgestellt wird, ist also nur eine mögliche Lösung. Jeder muss selbst entscheiden, ob sie den eigenen Bedürfnissen entspricht oder andere Tools vielleicht besser zum eigenen Anwendungsfall passen.

Das Set-up

Für unsere Toolchain benötigen wir zusätzlich zu Xcode drei weitere Tools (Kasten: „Was sind das für Tools?“):

  1. fastlane (zur Automatisierung verschiedener Aufgaben)

  2. Git (zur Versionsverwaltung und als Trigger für die verschiedenen Aktionen später)

  3. Jenkins (als primäres CI/CD-Tool)

Was sind das für Tools?

fastlane

fastlane ist ein Open-Source-Tool, führt u. a. Unit- und UI-Tests mit unterschiedlichen Konfigurationen durch und kann auch beim Upload zu HockeyApp, TestFlight/App Store Connect oder Chrashlytics behilflich sein. Ein Tool, mit dem sich relativ einfach Zertifikate und Provisioning Profiles erstellen und aktualisieren lassen, ist ebenfalls Teil des Pakets. Mindestens genauso hilfreich, wenn auch an einer anderen Stelle, ist fastlane, wenn es um automatisiertes Testen geht [1].

Git

Git ist wohl das aktuell am weitesten verbreitete Versionsverwaltungssystem im Bereich der Softwareentwicklung. Ob man dabei eine selbst- oder fremdgehostete Lösung verwendet, spielt in der Regel keine Rolle. Die Befehle für Git sind überall gleich, und für Jenkins gibt es entsprechende Plug-ins für die verschiedenen Git-Hosts. Die meisten Entwickler werden vermutlich bereits mit Git arbeiten. Das hat den Vorteil, dass man ein bereits bestehendes System nutzen kann. In unserem Beispiel werden Commits und Pull Requests (auch Merge Requests genannt) verwendet, um automatisiert entsprechende Aktionen auszulösen – vom Testen der App bis hin zum Upload zu TestFlight bzw. App Store Connect [2].

Jenkins

Jenkins ist ein Open-Source-Server für Automatisierungstechnik. Er überprüft regelmäßig die verbundenen Repositories auf neue Commits und Pull Requests. Wenn er einen findet, wird ein automatisierter Durchlauf mit den entsprechenden Aufgaben gestartet, z. B. Unit-Tests oder ein Ad-hoc Build. Diese Läufe werden in der Jenkins-Welt als Job bezeichnet [3].

Automatisieren mit fastlane

Wer als iOS-Entwickler fastlane noch nicht kennt, sollte es sich auf jeden Fall einmal anschauen. Es hilft dabei, immer wiederkehrende Aufgaben zu automatisieren und gibt uns dadurch mehr Zeit (Kasten: „Build- und Testzeiten verringern“), uns auf unsere eigentliche Aufgabe zu konzentrieren – das Schreiben von Code. Mit fastlane kann man mit nur einem Befehl Unit-Tests auf mehreren Geräten und iOS-Versionen testen, Screenshots erstellen, die App bauen, signieren und zu TestFlight hochladen lassen. Und das sind noch ni...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang