views:

455

answers:

4

I looked at a couple other questions on SO - and not really sure they answer this question.

We are building C++ applications for Win32 and Linux. Right now we have some scripts (bat files for win32) that run on a schedule to do builds.

We'd like to have CI for our projects, but I'd like to have only one CI server that handles building on both platforms. Integration with SVN is important.

Is it possible to have one configuration/one CI product/server do this?

Has anyone done this successfully? Bamboo looks like it might solve our needs, but I hate to jump into an expenditure like that as a bootstrapped startup if we can avoid the cost.

+8  A: 

You might want to have a go at Hudson. Though primarily for Java-based projects, you could tweak it to suit your needs. It integrates with SVN smoothly, plus you could use the muti-step build feature to call your (existing) batch files, and process further.

pugmarx
It can launch builds on both platforms using the same/one configuration?
Tim
Not exactly. But how do you manage that with .bat files?
pugmarx
You would create two "projects", both pointing at the same CM repository, but tied to different build agents, with each build agent running on a different platform. Very doable (and quite easy.)
Jared
`+1` from me for hudson. It's a nice tool and _very_ easy to setup. The only disadvantage that I know of is that it cannot really be configured to make a build for _every_ checkin.
sbi
+4  A: 

TeamCity can run build agents on different platforms, for example, one build agent on Windows and one on Linux. There is configuration available to specify which build agents each build goes to.

TeamCity isn't free, as in speech, but there is a free, as in beer, version (the Professional Edition) with some limits (3 build agents, 20 users, 20 build configurations).

CoverosGene
yes - I was looking at that from the other similar question. It might be the closest match. We're small right now and those limits would probably work.
Tim
TeamCity is exceptionally user friendly. Made by JetBrains, the makers of the IDEA Java IDE. Very smooth experience with exceptional power. Still bending my brain around the "Build Agent" concept which allows running builds in parallel on distributed servers, and then to collate the results back to a central repository. Also, kudos to JetBrains for supporting a Mac OS X and Linux version of TeamCity.
GrahamMc
+7  A: 

Buildbot is definetly one tool to look at - http://buildbot.net/trac. Central server which monitors all the projects and notifies agents of new tasks so you can build on any environment you really need without setting up cross compilation environment.

You could also look at Cruise Control @ http://cruisecontrol.sourceforge.net. While it looks like its more geared towards java building, you can do quite a lot with it. I have a setup that builds linux arm & i386 binaries and packages those into debs and maintains a debian repository from build results - run unittests and all kinds of stuff on the code..

But what i really wanted to say is that basicly, allmost all ci server software that i've used are mainly just "task schedulers" and you still need to build/configure the build environment yourself which is - in multiplatform scenarios atleast - bigger tasks that configuring a software that executes the builds and produces nice reports from them..

rasjani
Buildbot is amazing, very highly extensible and so valuable. I've never looked at cruise control or anything but then again because of buildbot I've never had too :-) .
Brian Gianforcaro
Indeed - buildbot exactly that - highly extensible but with it, it also is slightly harder to configure for average person where as cruisecontrol aint that hard to configure but in most cases lacks features unless you patch the code yourself.I've personally ran both and both have their advantages which depend case by case =)
rasjani
BuildBot is excellent for multi-platform projects. Look at Mozilla, Webkit and many others.
Marcus Lindblom
+3  A: 

We use Zed Builds and Bugs for this and it works really well for us. There's a single central server where you setup your build definition. Then for each "step" in the full build, you can define which server that "step" will execute on. We have steps that execute across: Win32, Linux64, Linux32, HP, AIX, Solaris, and even steps that are pushed across the world for remote execution.

Each of the steps can be setup to run in parallel or series, so when HP, AIX, Solaris, and Linux are all doing the same thing, they can all run in parallel, and the Win32 follow-up will wait until everything finishes before continuing.

You can also set up child build processes, and then launch these from the "master" build so that you can create more complicated build threads that will run independently from each other, but all tied together via the master build definition.

It's not free, but the amount of time that it has saved us (me in particular) has well paid for the cost of the software many times over.

Steven M. Cherry