54

Nachdem ich Hudson für die kontinuierliche Integration mit einem früheren Projekt verwendet habe, möchte ich einen Continuous Integration Server für die iPhone-Projekte einrichten, an denen ich gerade arbeite. Nach einigen Nachforschungen sieht es so aus, als gäbe es keine CI-Engines, die speziell für Xcode entwickelt wurden, aber ein Typ hatte Erfolg using Cruise Control combined with the xcodebuild CLI tool. Hat jemand hier das versucht? Gibt es CI-Engines, die gut mit Xcode-Projekten funktionieren?Kontinuierliche Integration für Xcode-Projekte?

Ich werde Cruise Control wahrscheinlich versuchen. Ich werde eine Antwort mit meinen Ergebnissen veröffentlichen.

+0

Der Link in Kommentar oben kein Logger funktioniert –

+0

Überprüfen Sie [rultor.com] (http://www.rultor.com). Es ist eine gehostete Lösung, die [alle Builds in isolierten Docker-Containern ausführt] (http://www.yegor256.com/2014/07/29/docker-in-rultor.html). Soweit ich weiß, ist es möglich, Xcode in Docker – yegor256

+0

@ yegor256 läuft ist es wirklich möglich, Docker mit Xcode ausführen? Ich habe kein Basis-Image mit OS X im Docker Hub gefunden :( – Ponf

Antwort

36

Ich bin erfolgreich mit Hudson auf dem Mac mit xcodebuild. Mit der Veröffentlichung des 3.0 iPhone SDK haben Sie die Kontrolle über das Ziel, die Konfiguration und SDK, gegen die das Projekt gebaut werden soll.

Es ist so einfach wie ein Build-Schritt in hudson Erstellen und xcodebuild erzählen das Projekt zu erstellen:

xcodebuild -target "myAppAppStore" -configuration "DistributionAppStore" -sdk iphoneos2.1 

Die Upfront-Arbeit hat sich für mich gelohnt, wie meine Builds ohne weitere Gedanken funktionieren. Ich habe eine detaillierte Beschreibung in meinem Blog geschrieben, wenn jemand interessiert ist.

iPhone app distribution made easy

+0

Ihr Link verrechnet zu einer "Seite nicht gefunden". :( – Spanky

+1

@Spanky - Ich habe den Link zu Silencode Blog aktualisiert. – itsmatt

9

Adium verwendet buildbot mit Xcode ziemlich effektiv. Wir haben ein einfaches Makefile geschrieben, das xcodebuild mit den richtigen Zielen und Konfigurationen aufruft, aber ich bin mir ziemlich sicher, dass das optional ist.

+0

Danke, ich werde das überprüfen –

+5

Adium rockt! (Ähm ... Entschuldigung für den off-topic Kommentar. Ich konnte der Gelegenheit nicht widerstehen, einige zu zeigen Anerkennung) – pestophagous

4

Ich denke, Sie sollten immer noch in der Lage sein, Hudson zu verwenden. Hudson ist sehr flexibel und ermöglicht es Ihnen, auch Shell-Skripten für den Bau zu verwenden: Shell Scripts and Windows Batch Commands

Gerade dort xcodebuild eingeben. Sehen Sie sich die Manpage xcodebuild an, um die Optionen von xcodebuild zu sehen.

8

Ich habe verwendet CruiseControl- mit Xcode (ähnlich zu dem, was Pragmatische Automation vorgeschlagen) und hatte angemessenen Erfolg. Ich bin auch sehr vertraut mit CruiseControl und es ist relativ schrecklich Konfigurations-Setup.

Ich habe auch BuildBot mit guter Wirkung verwendet, aber festgestellt, dass es die Stärken wirklich nicht meine Bedürfnisse anzupassen (verteilt Sklaven bauen und über mehrere verschiedene Systeme Reporting). Das Konfigurieren von Buildbot-Setups kann eine Kunst für sich sein, obwohl es nicht schwierig ist. Es ist im Wesentlichen das Schreiben von Skripten in Python.

Seit Hudson verfügbar geworden ist, würde ich es als einen Weg empfehlen die kontinuierliche Integration für den Betrieb. Es hat eine webbasierte Schnittstelle (CruiseControls primäres Defizit in meinen Gedanken) und ist sehr flexibel in den verschiedenen Systemen, die es unterstützt. Sie können Befehlszeilen-basierte Builds ganz einfach und sehr offensichtlich aufrufen. Das heißt, ich habe keine Instanz mit Hudson und Xcode eingerichtet, wo ich für die anderen Systeme habe, also ist das teilweise Spekulation meinerseits.

4

Wenn Sie nicht auf dem neuesten Stand leben nichts dagegen habe ich begangen gerade ein xcode builder für CruiseControl-.

13

Resurrecting diesem Thread. Ich habe keine zufriedenstellende Lösung gefunden, um automatisierte XCode-Builds mit Komponententests auf einem Build-Server zu erstellen. Daher habe ich einige Nachforschungen und Codierungen durchgeführt. Das Ergebnis ist this blog post, das alles erklärt, und this Ruby script, das die OCUnit-Ausgabe von xcodebuild in das XML-Format konvertiert, das JUnit für Testberichte verwendet. Der Build-Server, den ich ausgewählt habe, war Hudson.

aktualisieren 3/2 2012: Ich habe diese aktualisiert einige benutzerdefinierte Shell-Skripten für den Bau verwendet werden und läuft.Verfügbar here. Es eignet sich nicht nur für die kontinuierliche Integration, sondern auch für die Erstellung über die Befehlszeile auf Ihrer eigenen Maschine.

0

Jenkins funktioniert gut. Sie können entweder Ihr xcode-Projekt erstellen, indem Sie Ihr eigenes Shell-Skript schreiben, dann lassen Sie Jenkins es ausführen, oder Sie können auch das xcode-Plugin verwenden.

Aber Sie müssen das Autoritätsproblem beachten. Mit wenigen Anpassungen in den Jenkins-Konfigurationen können Sie Ihren CI-Server in kürzester Zeit verwalten.

9

Apple veröffentlicht gerade (10. Juni 2013) für OSX Mavericks (OS X 10.9) eine neue Continuous-Integration-Plattform, die die am meisten integrierte Lösung für kontinuierliche Integration ist, die ich zuvor gesehen habe. Es ist von developer.apple.com verfügbar, hier in dieser Seite hat die Details:

https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/

Ich empfehle den WWDC 2013 Vortrag zum Thema zu sehen.

+0

Das ist großartig! Xcode endlich einige richtige Testing-Tools – LightningStryk

Verwandte Themen