Build automation is an important process in the software development lifecycle. The ability to have your application automatically compiled for you on a regular schedule can be extremely empowering. Whether you are running your builds infrequently, nightly, or every time there is a code change, the status of a build can give a good indication of the overall health of the project.
Team Foundation Build was primarily designed by the Microsoft India Development Center. The original codename for Team Foundation Build is BigBuild.
In a perfect world, you would have a set of machines completely devoted to doing your builds. Your build software would allow you to perform the following tasks quickly and easily:
Clean the build machine to prepare it for the next build
Move the latest source code from the repository to the build machine
Compile the code
Run tests against the compiled application
Store the build results in an easily consumable format
However, you never do seem to live in the perfect world, do you? Finding one product that easily integrates into your environment and does all these things is usually impossible. Most of the time, you are kludging together different scripts to try to automate the process as best you can. Even then, you still can't get the integration you really want. Team Foundation Build server is here to change all of that.
Your build is at the center of your development process. Think about it, if your build breaks, then you don't have a product to show for it! One of the most important policies you can implement is a build break policy - if someone breaks the build, they have to stay behind until it is fixed. It's a mindset that is very prevalent in the agile development community and within Team System - build in quality early in the process, and continuously. If you are serious about your builds, you should consider designating a member of your team as a release manager. You can learn more about the release management role in Chapter 17.
Team Foundation Build server has been referred to as a "build lab in a box." It provides the functionality of a public build lab, integrates smoothly with Visual Studio Team System, and is relatively easy to get up and running. And all of those tasks we mentioned earlier? Team Foundation Build server provides the ability to automate all of them. That said, remember, at the time of this writing, that this is the first version of Team Foundation Build, and some features are still developing. Some of those will be touched on in this chapter. This is not meant to be a discouraging statement, far from it. Team Foundation Build is a good first version; it will only get better.
If you are interested in the build process, along with the software configuration management and release management practices within Microsoft, a book we highly recommend is Vincent Maraia's The Build Master: Microsoft's Software Configuration Management Best Practices.
This chapter focuses on Team Foundation Build server, specifically on how to configure it. We start by giving you an overview of the Team Foundation Build server architecture, explain how it works, and look at some of the build reporting options. Then we talk about some common build scenarios, including nightly builds and Continuous Integration. Finally, we give even more details on how to configure your Team Foundation Build server.