Als Softwareentwicklungsteam steht man ständig vor neuen Herausforderungen – eine davon ist der Deploymentprozess. Von außen betrachtet, wirkt dieser meist einfach und so wird der Aufwand schnell unterschätzt. In der Realität ist es jedoch anders: der Releaseprozess ist deutlich komplexer und zeitaufwendiger als es auf den ersten Blick scheint. Vor allem im Bereich der iOS-Entwicklung ist o.g. Prozess besonders langwierig und komplex. Es werden unzählige Zertifikate und Profile benötigt bzw. im Laufe des Gesamtprozesses erstellt. Für jede App existiert eine AppID, für jeden Entwickler eine Code Signing Identity sowie ein Provisioning Profile für jede App und jeden Entwickler, all dies selbstverständlich für jede potentielle Umgebung (z. B. Development und AppStore). Hieraus folgt, dass die Menge an Profilen und Zertifikaten, in Abhängigkeit von der Anzahl an Projekten und Entwicklern rasant ansteigen kann und schnell unübersichtlich wird. Hinzu kommt der Aufwand, diese Profile und Zertifikate zu verwalten. Außerdem sollten die Screenshots, welche im AppStore zu sehen sind auch aktuell gehalten werden. Mit zunehmender Anzahl an unterstützten Sprachen und Geräten steigt diese Zahl enorm, z. B. haben 10 verschiedene Sprachen, 5 verschiedene Geräte à 5 Screenshots zur Folge, dass bei jedem Release manuell 250 Screenshots zu erstellen sind.

Für die Vereinfachung dieses Prozesses nutzen wir das Framework „fastlane“. Es übernimmt die Zertifikat- und Profilverwaltung, das Erstellen neuer Versionen und der dazugehörigen Screenshots sowie den Testflight- oder AppStore-Upload. fastlane selbst besteht aus unzähligen Tools, welche je nach Use-Case kombiniert werden können, um den eigenen individuellen Releaseprozess zu automatisieren. Für einen neuen iOS-Release nutzen wir beispielsweise folgende Tools:

  • snapshot: erstellt automatisierte Screenshots für jede nötige Devicegröße sowie Lokalisierung
  • frameit: packt einen Device Frame um die zuvor erstellten Screenshots
  • scan: startet unsere Tests und für den Fall, dass diese nicht erfolgreich sind, wird die Ausführung an dieser Stelle abgebrochen
  • match: managed die notwendigen Zertifikate und Profile in einem gesonderten Repository
  • gym: baut und packt die getestete App und signiert sie
  • pilot: lädt die App inklusive Metadaten etc. auf TestFlight
  • deliver: Alternative zu pilot, lädt alle Screenshots, Metadaten und die signierte App auf iTunes-Connect

Wenn all diese Schritte erfolgreich abgeschlossen wurden, befindet sich ein neuer Build im Apple Review Prozess und wird im Anschluss automatisch für den AppStore freigegeben. Kombiniert man dies zusätzlich mit einem Continuous Integration-Tool, kann man o.g. Prozess fast vollständig automatisieren und spart somit die kostbare Zeit der Entwickler, welche stattdessen für die Weiterentwicklung der Software verwendet werden kann.

 

Über den Autor