New for Team Builds in Team Foundation Server 2010 is the concept of Build Controllers. In the previous versions of Team Foundation Server (2005/2008), you were only able to assign a Team Build to a specific Build Agent. This means that when the Build Agent is offline or in failure, your Team Build won’t run and you will have to manually switch to another Build Agent.
In Visual Studio Team System 2010 you must assign the execution of a Team Build to a specific Build Controller instead of a Build Agent. The Build Controller will now be responsible for managing a custom pool of Build Agents and will select the rightBuild Agent to run the Team Build. In the screenshot below you can see that the Default Controller has a pool of 2 Build Agents : Default Agent and Pieter’s Agent. A Build Controller – like the Build Agent – may have 4 different states : Enabled, Disabled, Unreachable and Initializing.
New is also the tagging system for Build Agents. You may for example tag a Build Agent as a WinServer2008 machine or as VeryPowerful.
These tags may be used during the configuration of your Team Build. When a Team Build needs to run on a Windows Server 2008 machine, you can enforce this in the Build Process setup on the ReservationSpec of the agentScopeActivity [“Select an Agent and Build”].
When preparing a demo for my VISUG session last week, I noticed that on the VS2010CTP (October 2008 Release) there’s only one Build Agent assigned to the Default Build Controller and I couldn’t find a way to assign an extra Build Agent to the Default Build Controller. Brian Harry forwarded my question to Jim Lamb and Aaron Hallberg of the Team Build and they finally came up with the magic : for now it’s not possible to do it via the user interface, but for now you need a command line to do it …
agent /new /name:"Pieter's Agent"
This exe runs in the Team Build Folder of %Program Files%\Microsoft Visual Studio v10.0 Team Foundation Server. After executing this command, an extra TFS Build Agent should pop up in your Task Manager …