How should I tackle Continuous integration for a SOA platform?
Let me explain the setup. We have 30 web service solutions and 5 client solutions, the web services are quite dependent on each other (references contract dlls) and also share some common utility dlls.
Until now we have been happy with CruiseControl.net (37 CC projects, 5 clients, 30 WS, 1 utility project, 1 integration test project) all building and testing independent of each other. Before each deploy we trigger the builds for all projects in a well-defined order which gives us ready deploy-artifacts to deploy to some 7 different servers.
Until now we haven't had any versioning of services, and each deploy would deploy the complete shebang.
We recently went into production and now we need to branch out the code, so that any further development does not mess up our ability to hotfix what is in production now.
Also we want to split up our efforts, spawning separate development efforts creating new clients or adding major functionality into existing clients/services, what I'm thinking is that we need the following
that way we can always hotfix prod with very little effort, we will continue to improve prod based on user feedback on a monthly basis, and we can launch new major efforts on our SOA stack without interfering with the first two (until we merge the code that is :) )
The question is: what tools should we use for CI? options as I see them:
- duplicate projects within our ccnet instance
- duplicate ccnet: xcopy CCnet to X locations on build machine, setup new services on different ports, tweak svn source, build location and deploy artifact location
- use a different CI server more suited to these problems
1: I don't like it (unwieldy, when is it green, all teams use same pool)
2: I could see us doing this, but it feels a bit clunky
3: Which server should we use? So far I've heard the names Hudson and Cruise, would these be applicable?
4: Have I thought completely wrong? How do you other guys do CI on a SOA stack that is meant to support many teams' development efforts?