Several times in my career, I have worked in a software group that determined that
a) We needed a build/test system
b) We should write our own
c) We can have a developer spend a week, get it done and they shouldn't have to touch it again
Every time, this has resulted in a system that only seems to work for the person that wrote it and requires their constant attention. I've spent time on several occasions looking for a tool that I could grab that would serve our needs, but come up empty-handed. Generally, tools like this server a very narrow market. I'm at the point again of needing something like this. Is there something out there, or do we write it again?
Here are my requirements in priority order (the last few are just nice to have):
Ability to handle a multi-project build. We have several components that both provide things other components use and use things from other components. A developer should be able to check out 1 component and make changes without having to build the world. Dependencies outside the project should be pulled in automatically. So some way to be able to push and pull the built objects to a server is critical for this. Another aspect of this is the ability to be able to pull down all dependencies to a local directory for development on the road.
Don't worry about exactly how things get built. This may sound weird, but I don't want the build system to worry about compiling my code. There are already great tools that do this for every language - Ant, CMake, etc. I just want to tell it what to call to make things build, and what output it should care about. This way, Project A can be in Java, Project B can be in C++, you get the idea.
Have some way to run tests on the output
Show the current build/test results on a web page
Email the results
Integration with RCS (we use svn)