I want something that I haven't so far been able to find in anything but theoretical papers and books. If it doesn't exist I'm rather dumbfounded because it sounds like a lot of people use these kinds of systems and that they work very well. Maybe what I need is some sort of combination of things, I'm not sure. Here are my requirements for the system:
- Can hook into SVN to be triggered via checkin's.
- Can configure independent components as project "pipelines"
- I mean that a checkin to a component triggers that component to build, run unit tests, and spit out a distributable.
- Can configure components that depend on other components
- If I check in to component A and component B depends on component A, component B has its A dependency updated and rebuilds upon completion of component A.
- Uses native build processes like msbuild or make.
- I don't have to configure something totally new just for this.
- If a dependency fails the upstream components do not update it, but they will update other components that did not fail.
That's the build server end. I want developer side integration as well.
- A new developer should be able to run a command that gets everything and builds it all for the first time.
- This would include all components for some given project.
- The same build, update, build process happens on a developer's machine.
- Use of any IDE
All of the above is automated. My team currently has this but does almost everything by hand :(
What I'm describing is described in many places including the book Continuous Delivery and the paper titled Continuous Release. The closest I seem to be able to find so far is Maven, but it doesn't seem to have the "can use native build system" feature (you tell it each file you want built and the compiler/linker....like an XML make file). It also seems very much geared toward Java and I want something language agnostic...in fact I want something that doesn't necessarily even build programs, it could be building anything that needs some form of compilation.
So, how? What? Where? and How much?