© Liashko/Shutterstock.com
Entwickler Magazin
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.

Thorsten Stark


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?“):

fastlane (zur Automatisierung verschiedener Aufgaben) Git (zur Versionsverwaltung und als Trigger für die verschiedenen Aktionen später) Jenkins (als primäres CI/CD-Tool)

Was sind das für Tools?fastlanefastlane 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].GitGit 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].JenkinsJenkins 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 e...

Entwickler Magazin
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.

Thorsten Stark


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?“):

fastlane (zur Automatisierung verschiedener Aufgaben) Git (zur Versionsverwaltung und als Trigger für die verschiedenen Aktionen später) Jenkins (als primäres CI/CD-Tool)

Was sind das für Tools?fastlanefastlane 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].GitGit 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].JenkinsJenkins 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 e...

Neugierig geworden?


    
Loading...

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