CI Tools and Best Practices in the Cloud

Continuous Integration

Subscribe to Continuous Integration: eMailAlertsEmail Alerts newslettersWeekly Newsletters
Get Continuous Integration: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn

Continuous Integration Authors: Yeshim Deniz, Mehdi Daoudi, Elizabeth White, Liz McMillan, Pat Romanski

Related Topics: Virtualization Magazine, Continuous Integration

Virtualization: Article

Continuous Integration with Team Foundation Server 2008

Widely accepted best practices easily incorporated into any development methodology

In the recent past, it was common for Windows applications to be manually compiled and built directly on a developer's desktop computer. This caused many problems.

For example, the developer may have had a different version of a component used in the application, or you couldn't build when he was on vacation let alone left the company, and it introduced a high degree of error if the developer made changes for future features (or testing code) without realizing it was included in the build.

The next evolutionary phase was "The Build Machine," a dedicated machine for the build. However, the effort of actually building applications was largely either manual or a custom "one-off" automated process. Integrating the efforts of a team of developers was often a painful process because this was the first time their code was tested as an integrated unit.

In the early 2000s, when Microsoft developers began migrating to the .NET platform, a new software methodology called "Extreme Programming" was emerging. One of its 12 core processes was called "Continuous Integration," which was designed to solve the problems described above.

Prior to the first release of Team Foundation Server 2005, many .NET developers used CI, but this required integrating a number of different tools. Most of these tools were open source, with varying degrees of features, integration, and support. TFS offers an enormous advantage: it's fully integrated with Visual Studio, with the complete support of Microsoft and its surrounding community of blogs and forums. Add to that the rich features of TFS beyond build and CI - particularly the integration of build data in the TFS Data Warehouse, which allows detailed metrics for software quality - and TFS becomes a compelling choice even for users who have successfully implemented their builds without it.

Whether or not one is a proponent of what is now called "Agile Methodologies," CI practices are widely considered "best practices" and are easily incorporated into any development methodology. While not all of those practices may be desirable or practical for all development groups, they're easily incorporated as core features of Team Foundation Server. This is particularly true given the enhancements introduced with the VSTS 2008 "Orcas" release.

As described by the "guru" of XP, Martin Fowler, at, Continuous Integration is defined as: 1) A single source repository; 2) An automated build; 3) A self-testing build; 4) Daily commits across the project team; 5) Every commit builds its mainline on an integration machine; 6) Keep the build fast; 7) Test in a clone of the production environment; 8) Make it easy for everyone to get the latest executables; 9) Everyone can see what's happening; and 10) Automate deployment.

Let's take a look at these 10 practices and how they can be implemented in TFS 2008.

Single Source Repository
A discussion of the features of the TFS Version Control could fill entire articles (or books!) Suffice it to say, this component is widely considered the best on the market - many Java shops use it. The Version Control component is worth the cost of the TFS license alone! (But it would be a huge waste to use TFS only for version control.)

The Source repository is implemented using SQL Server, allowing atomic transactions on check-ins; distributed development teams; easy backup; and no fear of "corruption" on large repositories. Branch and Merge is a strength, not a feature to be avoided.

More Stories By Daniel Sniderman

Daniel Sniderman first learned to program FORTRAN in high school in the late ?70s using a keypunch machine. He has a BA in History from the University of Illinois at Urbana-Champaign, and a MCSD.NET and MCTS in Team Foundation Server. Dan has been a senior consultant with Magenic since 2004.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.