Mohammad Jalloul, a developer on the Developer Division Engineering team, has released a new tool on CodePlex called TFS Check-in Validation Tool. This tool provides the ability to have a checkin validating by a build prior to being checked in. This is similar to a feature in TFS 2010 called Gated Checkin, which is integrated into VS and TFS (you can learn more about Gated Checkin and other TFS Build 2010 features in this video). With both of these the goal is to prevent build breaks from being checked in by validating them beforehand. I refer to this as "pessimistic" continuous integration in contrast to traditional continuous integration where developers check in optimistically and react to build breaks. Mohammad's tool gives you the capability to do this now with Team Foundation Server 2008.
Mohammad has put a lot of effort into this tool and already has an internal team using it. He has also recruited William Bartholomew, a VSTS MVP, to be a project coordinator. I look forward to hearing what you think about it and encourage you to try it out.
The TFS Check-in Validation Tool extends TFS Team Build 2008 by enabling buddy build queuing (pre-checkin), validating checkins using shelvesets, and build agent pooling, all from the VS 2008 IDE.
TFS Check-in Validation Tool Features
The TFS Check-in Validation Tool is a collection of tools that allows you to perform the following functionality that is not provided by Team Build 2008:
- Check-in Validation/Buddy Build functionality allows running buddy builds against one or more shelvesets by utilizing your existing Team Build Definition
- Add one line to your TFSBuild.proj script to make it buddy-build enabled
- The ability to check in shelvesets upon buddy build success
- Ability to have a buddy build or a regular build request go against a Build Agent pool rather than queuing against the single build agent that was configured in the build definition
- Custom MSBuild tasks that extend Team Build to allow running buddy builds
- The ability to assign a weight to each build agent in the pool (for example, you might want to favor the agents with better hardware by assigning a higher weight to them to get them selected more often) and also to restrict your build pool size to a subset of the agents registered with the Team Project
See the Installation Guide for more detailed screenshots: