Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Hudson (or its fork <a href="http://jenkins-ci.org/" rel="nofollow noreferrer">Jenkins</a>) is really not hard to set up; it's what we use internally. We don't just run iphone builds from it -- in fact, there's only only one lone mac mini set up for iphone builds, and it's a relatively recent addition. We've had a half-dozen other slaves on it for other different platforms for some time.</p> <p>You can play with it through the "Test Drive" link on the <a href="http://wiki.hudson-ci.org/display/HUDSON/Meet+Hudson" rel="nofollow noreferrer">Meet Hudson</a> page to get a feel for how easy it is to set up. (This is one of the things that sold me on it; it was really easy to get started with, but still configurable, extensible, and powerful enough to keep us expanding over the last few years. It replaced a really kludgy pile of hand-rolled scripts and programs that, despite being the author of, I was very happy to see laid to rest.)</p> <p>We have the hudson backend running on a beefy Mac OSX server, but there's no reason you couldn't run it pretty much anywhere (linux, windows, mac).</p> <p>As for configuring it for building -- it's about 6 lines of shell script in the project configuration, mostly calling <code>xcodebuild</code> and passing it <code>-project</code> and <code>-configuration</code> arguments.</p> <p>Example:</p> <pre><code>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 </code></pre> <p>We haven't set up the slave to run as a service yet -- this is on the TODO list. For now we just launch it via JNLP whenever we reboot the mini it's on.</p> <p>Repository is SVN, and the hudson master takes care of remembering the https auth info for us.</p> <p>We actively use the <a href="http://wiki.hudson-ci.org/display/HUDSON/Email-ext+plugin" rel="nofollow noreferrer">Email-ext</a> plugin, and have a build timeout plugin and an audit trail plugin since there are a lot of other people using the system and some of the builds are not well-behaved. We've experimented briefly with the <a href="http://wiki.hudson-ci.org/display/HUDSON/Warnings+Plugin" rel="nofollow noreferrer">Warnings</a> plugin and <a href="http://wiki.hudson-ci.org/display/HUDSON/Static+Code+Analysis+Plug-ins" rel="nofollow noreferrer">Static Code Analysis plugins</a> as well, need to get those used on more projects (we usually have warnings as errors in builds, but we do use PC-Lint and other tools on some projects; having output aggregated and tracked here is very nice). Finally the all-important <a href="http://wiki.hudson-ci.org/display/HUDSON/ChuckNorris+Plugin" rel="nofollow noreferrer">Chuck Norris</a> and <a href="http://wiki.hudson-ci.org/display/HUDSON/Emotional+Hudson+Plugin" rel="nofollow noreferrer">Emotional Hudson</a> plugins.</p> <p>We're currently not running unit tests (shame!) on any of the iphone builds, and we just use the ordinary "Archive the Artifacts" functionality built into hudson for storing builds. These can be accessed via authorized users via the hudson web interface. I've no doubt that it would not be hard for you to run your unit tests within the framework.</p> <p>&lt;/fanboy&gt;</p> <p>Our only real issues have had to do with AFP and SMB on the mac mini -- nothing to do with hudson at all, more just our internal network infrastructure. And the mini is a bit slow for my tastes -- we usually run pretty beefy build slaves on the theory that quick autobuild turnaround is a good thing. The mini may be gifted an SSD for this reason at some point.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload