http://buildbot.sourceforge.net/
Here's how it works. I'm running a buildmaster at buildbot.davefancella.com, on port 9989. You can look at the web interface with your browser at port 9990. The buildmaster polls the repo and if there are any changes it tells its connected buildslaves to run a build. Status is in the web interface. There's an "armabuilder" bot in irc that may or may not last there.
We need to work out how we want notifications.
Here's what you need to do:
Decide if you have a spare machine hanging around that you can run a buildslave on. We need one for Mac OS X and Windows. My machine will suffice for sanity checking the repo, but we should have a build machine for every platform we want to support. Ideally, the build factory would upload finished packages to beta.armagetronad.net. We'll have to work that one out, too. We should have it so that it builds start-to-finish to a package, say rpm or autopackage or whatever, windows installer. I'll be looking at making the thing support our branches so that it can also be building the 0.2.8 branch.
For developers, when you want to test a build on a specific platform that's got a buildslave, you can use the web interface to run the build. Otherwise, about twice a day, if there are any changes to the repo, builds will be run automatically.
If you want to make a buildslave, go on over to the buildbot site and look in the manual. Specifically look at the build factory section. The rest I've already taken care of, all you need to provide me with is a build factory, which is just a snippet of code that tells the thing how you want the build to run. Then give me a username and password that you want to use and which builds you want to run with that username and password and I'll hook you into the buildmaster. Then read about creating a buildslave, which is insanely easy. Create one and get it running and you're hooked in. The only rules about build factories are these:
* You must build both the dedicated server and the client. By convention here, I'm building the dedicated server first. You can provide two separate factories, in fact I should have done it that way for the one I created. Sue me.
* You should build from start-to-finish an installable package. Exceptions right now are Windows and Mac OS X. Probably any bsd will be a permanent exception. Basically if you want to add yet another linux build-slave, you should be building a specific package.
* When we have tests to run, we'll have the buildslaves run them. We don't right now, afaik.
* You must be willing to let other developers trigger builds on your machine.
The idea is simple. The automated build runs will tell us when the source tree breaks and will hopefully make it easier to enforce the standing rule that at least the dedicated server should build in the trunk. When all platforms are supported, release managers can use the system to make releases, obviously. We'll probably want them handmade for final releases, but we can do snapshots and stuff. Anyway, as a development tool the automated builds let us enforce the no-breaking-the-trunk rule. Also, obviously, individual developers can trigger builds on platforms for which they can't build already for whatever reason. This last part is very important because it lets me (or you) work on getting my (or your) changes to build there. It also lets you throw together a build and ask users to download it from aabeta to test, so make sure your build factories ultimately upload a finished package to aabeta!
On notifications. I was considering making a mailing list to send notifications to. Ideally we'd just have them post here, so if anybody wants to write up a notifier that posts to the forums, that's best. If not, we can either do a mailing list, see if the irc bot works, and/or you can just send me your email addresses and I'll put it into the buildmaster.
We don't have to marry this particular tool, but it appears to do everything I think we need it to do. Not sure how it'll work getting it to build in windows and Mac OS X, but the manual says they're supported platforms. I think we need something, and this is what I found that doesn't require java (it uses python, surprisingly enough).
Ironically, when I was testing I discovered the trunk doesn't build right now. !