views:

638

answers:

4

Hi,

my team is currently using buildbot to automate overnight and continuous-integration builds and regression tests. For builds and unit tests, the builder just invokes a script which syncs the sources from p4 and then runs xcodebuild. The regression tests are also launched by a shell script, and are themselves combinations of shell scripts and AppleScripts. The builds are all performed on one system but then buildbot triggers tests to happen on multiple Macs, with different architecture and OS combinations. The things I like about buildbot are the automatic triggers (so the tests run only if and when the build succeeds), and the reporting including the waterfall view to see the overall status.

However, I see a number of problems too. The "master" process which coordinates the builds is either leaky or just has a huge working set which means that it consumes a couple of gigabytes of memory. Occasionally network problems mean that a slave will be lost; rather than retrying later it will just fail the build. In fact if the slave is supposed to be triggered for a dependent build, it will fail the first build after it has otherwise successfully completed.

So what are the rest of you using to automate your Xcode builds and unit tests? How do those solutions work for you? Anything you would recommend?

+2  A: 

Our team use Hudson with a script which converts the Unit Test output from XCode to NUnit format.

Xetius
+3  A: 

I use TeamCity in a windows environment but I believe it will work on Mac and has xcode build agents.

Another similar question here.

redsquare
+1  A: 

We worked out what was using all the memory - log files - older buildbot keeps all logs forever and keeps them in memory (possibly until a restart).

Newer buildbot can be configured to keep a fixed amount of history.

Buildbot build log files should be limited in size to avoid the problem.

Douglas Leeder
That's good :-) I think the memory suck was the main issue, the slave availability thing is annoying but can be worked around by having a decent network.
Graham Lee
A: 

I use the XcodeBuilder that's part of CruiseControl. Of course it helps that I wrote it. :)

But I did use it on a real multiple person project for an iPhone app (Surf) that's for sale in the app store.

Jeffrey Fredrick