wiki:HowtoContributeABuildbot

Version 3 (modified by zooko, at 2010-06-25T01:14:27Z) (diff)

new improved instructions

From http://tahoe-lafs.org/pipermail/tahoe-dev/2009-December/003279.html . Subsequently updated.

Step 1: install darcs. Start at http://wiki.darcs.net/Binaries .

Step 2: install buildbot on your system

This is also the part where you choose what sort of controls you want to have over your buildslave. I would strongly advise you not to run your buildslave under your user account, and (duh) not to give it any sort of elevated privileges such as root!

So, running under a separate user account without high privileges is definitely a good idea, but since you're a security-aware user I guess I don't need to tell you this.

Also you can use other mechanisms to lock it down more like jail, chroot, etc. David Abrahams uses Solaris Zones to contain his buildslaves. I don't know what particular features Zones offer. I wonder if this means he can use ZFS snapshots to rewind the state of the filesystem before running each build. That would be cool. Brian Warner and the other buildbot maintainers have been hacking on some tricks to set up your buildslaves inside a full virtual machine so that you can have a pristine machine for every build -- e.g. "This is a fresh install of OpenBSD 4.6 with nothing added except for buildbot and its dependencies.".

Personally I don't (yet) use any such fancy techniques -- I just run my buildslaves under a separate user account which doesn't have access to my personal stuff or to root privileges.

Step 3: choose a name for your buildslave which will fit into the list of buildslave names: http://allmydata.org/buildbot/buildslaves . A hostname would be a good choice.

Step 4: Receive a password from me in email.

Step 5: create the buildslave with buildbot create-slave $BASEDIR dev.allmydata.org:9987 $SLAVENAME $PASSWORD

detailed docs: http://djmitche.github.com/buildbot/docs/latest/Creating-a-buildslave.html#Creating-a-buildslave

Then buildbot start $BASEDIR.

Step 6: Please do this two more times, one for pycryptopp and one for zfec. Those two use the same $SLAVENAME and $PASSWORD and hostname ("dev.allmydata.org"), but a different $BASEDIR (whatever directory you want -- I personally use a different user account for my tahoe- lafs, pycryptopp, and zfec buildslaves), and a different port number. Port 9987 == tahoe-lafs, port 10998 == pycryptopp, port 12987 == zfec .

Okay, once you've gotten all this working then we'll see your machine on the buildbot pages and we'll see how well Tahoe-LAFS passes unit tests on your platform. Eventually I would like to go on to the next step, which is integrating Tahoe-LAFS into the official package system of your operating system and adding tests to check whether Tahoe-LAFS is still correctly building from its package. But that is for another day.