it-swarm.com.de

Continuous Integration für Xcode-Projekte?

Nachdem ich Hudson für die kontinuierliche Integration mit einem früheren Projekt verwendet habe, möchte ich einen Server für die kontinuierliche Integration für die iPhone-Projekte einrichten, an denen ich gerade arbeite. Nach einigen Recherchen scheint es keine CI-Engines zu geben, die speziell für Xcode entwickelt wurden, aber einer hat Erfolg gehabt mit Cruise Control in Kombination mit dem xcodebuild CLI-Tool . Hat das hier jemand ausprobiert? Gibt es CI-Engines, die gut mit Xcode-Projekten funktionieren?

Ich werde es wahrscheinlich mit Cruise Control versuchen. Ich werde eine Antwort mit meinen Erkenntnissen posten.

55
Mike Akers

Ich verwende Hudson erfolgreich auf dem Mac mit xcodebuild. Mit der Veröffentlichung der 3.0 iPhone sdk haben Sie die Kontrolle über das Ziel, die Konfiguration und die Sdk, für die das Projekt erstellt werden soll. 

Es ist so einfach, einen Build-Schritt in hudson zu erstellen und xcodebuild anzuweisen, das Projekt zu erstellen:

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

Die Vorarbeit hat sich für mich gelohnt, da meine Builds einfach ohne zusätzlichen Gedanken funktionieren. Ich habe eine detaillierte Beschreibung in meinem Blog geschrieben, wenn jemand interessiert ist.

iPhone-App-Verteilung leicht gemacht

37
Silentcode

Wiederbelebung dieses Threads. Ich habe keine befriedigende Lösung gefunden, um automatisierte XCode-Builds mit Komponententests auf einem Build-Server zu erstellen. Daher habe ich einige Untersuchungen und Codierungen durchgeführt. Das Ergebnis ist dieser Blogbeitrag erklärt alles und dieses Ruby-Skript , 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 .

Update 3/2 2012: Ich habe dieses Update so aktualisiert, dass zum Erstellen und Ausführen benutzerdefinierte Shell-Skripts verwendet werden. Verfügbar hier . Dies ist nicht nur für die kontinuierliche Integration von Vorteil, sondern auch das Erstellen von Kommandozeilen auf Ihrem eigenen Computer.

13
Ciryon

Apple veröffentlicht gerade (10. Juni 2013) für OSX Mavericks (OS X 10.9) eine neue Continuous-Integration-Plattform, die die am stärksten integrierte Continuous-Integration-Lösung ist, die ich zuvor gesehen habe. Sie ist unter developer.Apple.com erhältlich , hier auf dieser Seite finden Sie die Details:

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

Ich empfehle die wwdc 2013-Präsentation zum Thema.

9
Rafael Gorski

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

9
Colin Barrett

Ich habe CruiseControl mit Xcode (ähnlich wie von Pragmatic Automation vorgeschlagen) verwendet und hatte einen vernünftigen Erfolg. Ich bin auch sehr vertraut mit CruiseControl und dem Setup des Konfigurationsformats.

Ich habe auch BuildBot erfolgreich eingesetzt, stellte jedoch fest, dass seine Stärken nicht wirklich meinen Bedürfnissen entsprachen (verteilte Sklaven, die über mehrere verschiedene Systeme hinweg aufbauen und berichten). Das Konfigurieren von Buildbot-Setups kann eine Kunst für sich sein, auch wenn dies nicht schwierig ist. Es ist alles im Wesentlichen das Schreiben von Skripten in Python.

Seitdem Hudson verfügbar ist, würde ich es als Weg für die kontinuierliche Integration empfehlen. Es verfügt über eine webbasierte Schnittstelle (CruiseControls primärer Mangel in meinem Kopf) und ist in den verschiedenen Systemen, die es unterstützt, sehr flexibel. Sie können Befehlszeilengesteuerte 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, daher ist dies teilweise eine Spekulation auf meiner Seite.

8
heckj

Ich denke, du solltest noch Hudson benutzen können. Hudson ist sehr flexibel und ermöglicht es Ihnen auch, Shell-Skripts zum Erstellen von: Shell-Skripts und Windows-Stapelbefehlen zu verwenden.

Geben Sie einfach xcodebuild ein. In der Manpage xcodebuild finden Sie die Optionen von xcodebuild.

4
catlan

Wenn Sie nichts dagegen haben, auf dem neuesten Stand zu sein, habe ich gerade einen xcode builder für CruiseControl festgelegt.

4

Jenkins scheint für einige Leute gut zu funktionieren. (Obwohl ich bisher noch keinen CI-Server verwendet habe.)

https://wiki.jenkins-ci.org/display/JENKINS/Xcode+Plugin

1
bentford

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

Sie müssen sich jedoch des Autoritätsproblems bewusst sein. Mit wenigen Änderungen in Jenkins-Konfigurationen können Sie Ihren CI-Server in sehr kurzer Zeit verwalten.

0
Tinolover