Hudson (or his Jenkins plug) is really not hard to set up; this is what we use domestically. We donβt just run iphone builds from it - in fact, there is only one single mac mini to build iphone, and this is a relatively recent addition. For some time, we had half a dozen other slaves on other platforms.
You can play with him through the Test Drive link on the Meet Hudson page to see how easy it is to set up. (This is one of the things that sold me that it was very easy to get started with, but still customizable, extensible and powerful enough for us to expand over the past few years. It replaced a really curly bunch of hand-screened scripts and programs that , despite the fact that I am an author, I was very glad to see that I was laid to rest.)
We have a hudson backend running on a hard Mac OSX server, but there is no reason why you couldnβt run it almost anywhere (linux, windows, mac).
As for its setup for building, this is about 6 lines of the script shell in the project configuration, which basically calls xcodebuild and passes the arguments -project and -configuration .
Example:
cd ${WORKSPACE}/Engineering/ set -e set -v xcodebuild -project foo.xcodeproj -alltargets -configuration Distribution clean xcodebuild -project foo.xcodeproj -alltargets -configuration Release clean xcodebuild -project foo.xcodeproj -alltargets -configuration Debug clean xcodebuild -project foo.xcodeproj -alltargets -configuration Distribution xcodebuild -project foo.xcodeproj -alltargets -configuration Release xcodebuild -project foo.xcodeproj -alltargets -configuration Debug
We have not yet configured the slave to display the service β this is on the TODO list. For now, we just run it through JNLP when we reload the mini-minimap.
The repository is SVN, and the hudson wizard takes care of remembering the https auth information for us.
We are actively using the Email-ext plugin, and you have the build timeout plugin and the control trail plugin, as there are many other people using the system, and some of them do not behave very well. We experimented briefly with the Warnings plugin and Static code. Analysis plugins should also get the ones used for more projects (usually we have warnings like build errors, but we use PC-Lint and other tools for some projects; data output is aggregated and tracked here very well). Finally, all the important Chuck Norris and Emotional Hudson plugins.
We do not currently run unit tests (shame!) On any of the collections of iphone, and we just use the usual "Archive artifacts" functions built into hudson to store assemblies. Access to them is possible through authorized users through the hudson web interface. I have no doubt that it will not be difficult for you to run unit tests within the framework.
</Fanboy>
Our only real problems were with AFP and SMB on the Mac mini - nothing to do with the hudson at all, it's just our internal network infrastructure. And the mini is a little slower for my tastes - we usually run rather muscular slave builders according to the theory that a quick turn of a car object is good. For this reason, the mini can be donated to the SSD at some point.