Implementing and Managing a build process
I have been tasked with the implementation and creation of a build process here at work. I have read Microsoft's guide on creating one, but it left me with a few questions. I am beginning to wonder if I am using source control correctly.
We currently use CVSNT and TortoiseCVS for our source control solution. It is free (open source) and very nice. We do not have a build process or build management system in place at all right now. One thing I have seen a lot of, is daily integration builds.
As of right now, we have 5 foundation projects for stuff like DataAccess, EntityFramework, ExceptionManagement, Utilities, and Web Controls. Each of those projects is shared across our applications. We currently have 3 applications(read: user interfaces) being built around 1 central database. We have a consumer facing application, a dealer(read: automotive dealerships) application and an administrative application. The consumer/dealer applications deal with managing the content of the database, while the admin application deals with addition of things like security, inventory, forms management, etc...
We have architected our system in such a way, that all 3 applications share the same DataAbstraction or Entity objects. We also have a Business project that abstracts the DataAbstraction(bear with me) even further.
I suppose my question(s) is, how do most developer's with an integrated build process manage all of this.
Should all of the developer's be running NAnt or something similar on their local machines to build and compile the projects as they work?
Do the foundation and shared projects get built nightly, and their resulting assemblies shared?
Do I check everything out from source control, build it, then check it back in?
If anyone has thoughts or can offer pointers, they would be greatly appreciated.