I've been using Luntbuild for a while on my build server. I'd really like to move into something more modern like TeamCity, but I'm not entirely sure how I'd handle a couple of things.
We have a few products which share a lot of components. In the past, we built a single product as one huge build-- it'd check out the product source and all the components, build everything each time, and produce an installer. But this took a long time for each build-- 40 minutes or more. With TeamCity I'm thinking about breaking up the builds so we're not rebuilding every component every time.
But I'm not sure how to handle "releases", and especially going back to build a new version of a previous release. With Luntbuild I'd branch off everything in SVN, then copy the luntbuild project with the copy pointing to the branch in SVN. Then I'd update the main project so that it used the next version number. So we'd release build 184.108.40.2062 as our "7.2.0" version and start working on 7.2.1. If we needed to do an emergency update of 7.2.0, we could do so in the SVN branch and still build it with the monolithic project in luntbuild.
But now that I've broken things up into so many separate builds, it doesn't see feasible to copy off all 12 little projects and make them each point to the SVN branch for an older release. Is this just a danger of separating the projects like this? Am I missing a simpler solution?