Continuous Integration for Xcode projects?

IphoneXcodeContinuous IntegrationCruisecontrolXcodebuild

Iphone Problem Overview


After using Hudson for continuous integration with a prior project, I want to set up a continuous integration server for the iPhone projects I'm working on now. After doing some research it looks like there aren't any CI engines designed specifically for Xcode, but one guy has had success using Cruise Control combined with the xcodebuild CLI tool. Has anyone here tried this? Are there any CI engines that work well with Xcode projects?

I'm probably going to give Cruise Control a try. I'll post an answer with my findings.

Iphone Solutions


Solution 1 - Iphone

I'm successfully using Hudson on the mac with xcodebuild. With the release of the 3.0 iPhone sdk you have compete control over the target, configuration and sdk that the project is to be built against.

It's as simple as creating a build step in hudson and telling xcodebuild to build the project:

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

The upfront work has paid off for me as my builds just work without any additional thought. I've written a detailed description on my blog if anyone is interested.

iPhone app distribution made easy

Solution 2 - Iphone

Resurrecting this thread. I didn't find a satisfactory solution to getting automated XCode builds with unit tests on a build server so I did some investigating and coding. The result is http://blog.jayway.com/2010/01/31/continuos-integration-for-xcode-projects/">this blog post explaining it all and http://github.com/ciryon/OCUnit2JUnit">this Ruby script that converts OCUnit output from xcodebuild to the XML format that JUnit uses for test reports. The build server I picked was http://hudson-ci.org/">Hudson</a>;.

Update 3/2 2012: I have updated this to use some custom shell scripts for building and running. Available here. It's good not only for continuous integration, but also building from command line on your own machine.

Solution 3 - Iphone

Adium is using buildbot with Xcode quite effectively. We wrote a simple makefile that calls xcodebuild with the proper targets and configurations, but I'm pretty sure that's optional.

Solution 4 - Iphone

Apple just release (June 10th, 2013) for OSX Mavericks(OS X 10.9) a new continuous integration platform which is the most integrated continuous integration solution that I have seen before. It is available from developer.apple.com, here in this page has the details:

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

I recommend to see the wwdc 2013 presentation on the topic.

Solution 5 - Iphone

I've used CruiseControl with Xcode (similiar to what Pragmatic Automation suggested) and had reasonable success. I'm also very familiar with CruiseControl and it's relatively horrific configuration format setup.

I've also used BuildBot to good effect, but found that it's strengths didn't really match my needs (distributed slaves building and reporting across multiple different systems). Configurating buildbot setups can be an art in and of itself, although it's not difficult. It's all essentially writing scripts in python.

Since Hudson has become available, I'd recommend it as an avenue for running continuous integration. It has a web based interface (CruiseControl's primary deficiency in my mind) and is very flexible in the various systems that it supports. You can invoke command line driven builds quite easily and very obviously. That said, I haven't set up an instance using Hudson and Xcode, where I have for the other systems, so this is partially speculation on my part.

Solution 6 - Iphone

I think you should be still able to use Hudson. Hudson is very flexible and allows you also to use shell scripts for building: http://hudson.gotdns.com/wiki/display/HUDSON/Building+a+software+project#Buildingasoftwareproject-ShellScriptsandWindowsBatchCommands">Shell Scripts and Windows Batch Commands

Just enter there xcodebuild. Take a look at the xcodebuild man page to see the options of xcodebuild.

Solution 7 - Iphone

If you don't mind living on the cutting edge I've just committed an xcode builder for CruiseControl.

Solution 8 - Iphone

Jenkins seems to work well for some people. (Although, I have never used any CI server before. )

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

Solution 9 - Iphone

Jenkins works fine. You can Either build your xcode project by writing your own shell script then let Jenkins run it, or you can also use xcode plugin.

But you have to be aware of the authority problem. With little tweaks in Jenkins configurations, you'll be able to manage your CI server in very little time.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMike AkersView Question on Stackoverflow
Solution 1 - IphoneSilentcodeView Answer on Stackoverflow
Solution 2 - IphoneCiryonView Answer on Stackoverflow
Solution 3 - IphoneColin BarrettView Answer on Stackoverflow
Solution 4 - IphoneRafael GorskiView Answer on Stackoverflow
Solution 5 - IphoneheckjView Answer on Stackoverflow
Solution 6 - IphonecatlanView Answer on Stackoverflow
Solution 7 - IphoneJeffrey FredrickView Answer on Stackoverflow
Solution 8 - IphonebentfordView Answer on Stackoverflow
Solution 9 - IphoneTinoloverView Answer on Stackoverflow