OS X neu mit Build-Server für Xcode

Seit OS X 10.9 Mavericks enthält der OS X-Server einen Build-Server für Xcode. Somit kann man OS X- und iOS-Applikationen automatisiert builden.

Der Build Server kann beispielsweise dazu verwendet werden, um Testern der eigenen App aktuelle Builds direkt via Web zur Verfügung zu stellen.
Bevor eine App via Build Server integriert wird, sollte natürlich sichergestellt sein, dass die App unter Xcode sauber kompiliert und archiviert werden kann. Die Suche nach Fehlerursachen funktioniert direkt via Xcode um einiges einfacher als via Build-Server.

Die Installation erfolgt in wenigen Schritten.

  1. Xcode aus dem App-Store installieren
  2. Xcode ausführen und Installation fertigstellen
  3. OS X-Server aus dem App-Store installieren
  4. OS X-Server ausführen und Installation fertigstellen

Danach kann im OS X-Server GUI der Xcode-Dienst angewählt werden. Darin wird man aufgefordert, zuerst zu definieren, welche Xcode-Installation als Build-Tool verwendet werden soll. Sobald dies definiert ist, kann der Xcode-Server gestartet werden (im Bild unten: rechts oben).

Bildschirmfoto 2014-03-01 um 12.39.49

Um nun eine Applikation builden zu können, muss erstmal ein Entwicklerteam hinzugefügt werden. Dazu reicht ein Klick auf Hinzufügen und man kann sich mit einer Apple ID einloggen, bei der das Apple Developer Program aktiviert ist.

Als nächster Schritt muss im Tab Repositories ein Repo hinzugefügt werden, welches die Daten der App enthält. Hier kann entweder ein neues, auf dem Build Serve gehostetes Git Repo angelegt werden, oder es wird ein bereits bestehendes Git oder SVN Repo verwendet.

Bildschirmfoto 2014-03-01 um 12.57.03

Somit sind alle Vorbereitungen abgeschossen und es kann ein sogenannter Bot erstellt werden, welche für das builden der Applikation zuständig ist. Dazu wechselt man via http://localhost (oder den entsprechenden Hostnamen) auf das Webinterface des Build Servers und loggt sich als erstes gleich rechts oben mit einem Benutzer mit entsprechenden Berechtigungen auf dem OS X Server ein.

Bildschirmfoto 2014-03-01 um 13.03.05

Mit dem rechts oben kann nun ein neuer Bot erstellt werden, es erscheint ein Wizard dazu. Im ersten Schritt wird das vorhin erstellte Repo ausgewählt und man gibt an in welchem Pfad die .xcodeproj Datei innerhalb des Repos abgelegt ist.

Bildschirmfoto 2014-03-01 um 13.21.58

Unter Scheme ist zu definieren, welches Schema zum kompilieren verwendet werden soll. Dabei ist zu beachten, dass das Schema in Xcode als Shared definiert wurde.

Bildschirmfoto 2014-03-01 um 13.19.30

Im zweiten Schritt des Wizards kann dann ein Zeitplan definiert werden und welche Aktionen beim jeweiligen Build ausgeführt werden sollen. Ein Build kann entweder manuell, periodisch oder nach jedem Commit ins Repo ausgeführt werden. Alternativ besteht die Möglichkeit einen eigenen Trigger-Script zu verwenden.

Schritt drei erschein nur, wenn vorhin des Testen als Aktion ausgewählt wurde. Darin kann eingestellt werden für welche Plattform und, falls iOS gewählt wurde, auf welchen Geräten die Tests durchgeführt werden sollen.

Im vierten und letzten Schritt kann noch definiert werden, wer im Erfolgs- und/oder Fehlerfall eine Benachrichtigung per Mail erhalten soll.

Nun ist der Xcode-Server bereit um einen ersten Build der App durchzuführen. Dieser kann sofort mit einem Klick auf Integrieren ausgeführt werden.

Abschliessend mein Fazit: Der Xcode-Server ist ohne grossen Aufwand installierbar. Die Installation sollte für jeden möglich sein, der sich mit OS X auskennt und mit der iOS- oder OS X-Entwicklung vertraut ist. Für ein kleines Entwicklerteam mag sich der Aufwand zwar nicht lohnen, sobald aber einige Tester hinter der App stehen und mit Daily Builds versorgt werden sollen, ist der Einsatz eines Build Servers interessant. Hier möchte ich noch auf TestFlight verweisen. Mit diesem Dienst kann auch die Verteilung der App an die Tester automatisiert werden. Eine Anleitung dazu gibt es hier, ich habe diese allerdings noch nicht ausprobiert. Der Dienst wurde aber erst kürzlich von Apple aufgekauft, es könnte also gut sein, dass in Zukunft eine Integration in den Xcode-Server folgen wird.