TeamBuild 2010 : Architecture overview 2

TeamBuild 2010 : Architecture overview

In TFS 2010 TeamBuild was rewrote. The engine is now based on Workflow Foundation 4.0 and the architecture is now distributed. In this post I’ll present the new architecture.

TeamBuild 2010 is composed of two components linked to the Team Project Collections:

image14.png

The BuildController is link to a single collection (a collection can have multiple BuildControllers) and does all the work which doesn’t invoke heavy processor and disk usage:

  • Updating the build number.
  • Creating the drop location.
  • Selecting the BuildAgent.
  • Executing the build on the BuildAgent.
  • Check in the changes associated to a gated checkin.

The BuildAgent is link to a single BuildController and do all the heavy work:

  • Creating the workspace.
  • Getting the source files.
  • Labeling the source.
  • Compiling.
  • Testing.
  • Linking with changesets.
  • Symbols publication.

As you can see in the previous schema, a BuildController can have multiple BuildAgent which enables native load balancing :)

Each BuildAgent can also be tagged to differentiate build configuration and these tag can be specified in a build definition to help select the correct BuildAgent. For example : you can install BizTalk on a build machine and tag all it’s BuildAgent with “biztalk”. You can now add the “biztalk” tag to all your build definitions for BizTalk projects and the BuildController will select the first free BuildAgent which was configured for BizTalk :)

From a physical perspective, all those components doesn’t have to be on the same machine. Each component can be on a separate machine, the only constraint is that only on BuildController can be installed per machine. Here is a simple deployment example:

image12.png

In this example each collection has an associated BuildController:

  • The BuildController for the collection A is physically on another machine with it’s associated BuildAgents.
  • The BuildController for the collection B is on the same machine as the TFS applicative tiers but it’s two BuildAgents are on two machines. One BuildAgent has a “biztalk” tag and is configured for building BizTalk projects.

It’s also good to know the all the BuildController and BuildAgent configuration is saved in TFS.

I have two words to conclude : IT ROCKS :)

Carpe Diem.

2 thoughts on “TeamBuild 2010 : Architecture overview

  1. Jason Apr 23,2010 17:23

    Hi,

    Can two Team Project Collections share one Build Controller? Thanks.

    Jason

  2. Guillaume Rouchon May 2,2010 09:43

    Hi Jason,
    A Build Controller can only be used by one Team Project Collections. You can only have one Build Controller per computer (it’s a Windows Service), so you’ll need one build machine per Team Project Collection. Note that a build controller can be host in a virtual environment.

    Guillaume

Comments are closed.