To ease our release testing, we're looking for a system to automatically build and (unit) test our software projects on a variety of architectures. Our constraints are:
- The code to build is written in several languages, including Python, Java and C.
- We have several distinct deployment architectures.
- We have multiple projects, which we would like to build and test independently.
- Our source control system is Subversion, and the system should integrate with that.
- The solution should ideally be open source.
We've looked at:
Artifactory + Continuum: Nice in some ways, but is heavily Java-centric, with limited or non-existent Python support.
Buildbot: This gives us almost all the functionality we need, except it doesn't support multiple projects, which is a deal-breaker for us.
What would you recommend? What do you use?
Take a look at TeamCity. Works like a charm for us.
Since moving away from buildbot i've been using cruisecontrol and i've been happy with it to certain degree. My current projects consist of building c++ & ruby (with some c extensions) to multiple architectures and and only gripe with is that most features do require ant. And currently single instance of cc is building roughly 40 different projects.. Build phases we have do consist of running unittests, some functional tests, getting code coverage and making a report of those, updating package database, irc integration, software packaqge creation and repository update (debian)
Only gripe is that most of the fancier features would require that (Atleast when inside cc build loop) build is happening with ant.
I've also evaluated hudson, it seems to be somewhat more flexible than cruisecontrol but i dont personally like the configuration interface of it.
I'm a developer on CruiseControl and I work for Urbancode who makes AnthillPro, so I can speak to the strengths of those. I'm also one of the organizers of CITCON so I'm pretty familiar with almost all the offerings in the space.
CruiseControl or Hudson are both pretty good open source CI tools. I find CC really easy to customize and extend and there are lot of plugins that have been added over its 8 year lifetime. Hudson is newer and easier for most people to get started; it is dead simple to get your first project running using the GUI configuration while CC requires mucking about in XML files. Hudson also has an active plugin community and is rapidly adding new capabilities.
However depending on the complexity and requirements of your projects you might find a commercial tool like AnthillPro would be a better fit. The reasons upgrade from CC or Hudson to AHP vary from company to company but some typical answers include the ability to setup self-service deployments with access control by environment, the desire to chain multiple builds/workflows together, the built in dependency management, the artifact repository, or the ability to pull together data from a bunch of different tools & builds across the lifecycle.
Not everyone needs those capabilities but the people who do find the upgrade to be worth the money.
Have you looked at Hudson? I've used it on .Net projects with a lot of success even though its a somewhat Java centric tool. It supports subversion and has an active and diverse plugin community which enables it to work with a lot of different languages. Its open source and it runs on many platforms.I found it to be relatively easy to configure and manage.
Why not also take a look at CI Factory.