Introducing TFS Deployer

TFS Deployer is installed as an agent in your test and production environments and supports the execution of PowerShell scripts when an event happens in TFS. In particular it listens to build quality change notifications which occur when you change the quality of a build under the Team Builds node of Team Explorer. These build qualities can also be changed through build scripts, as blogged by Aaron Halberg here: http://blogs.msdn.com/aaronhallberg/archive/2007/10/16/using-the-setbuildproperties-task-to-update-the-log-location-for-a-build.aspx

The way it works is that when TFS Deployer starts up, the service subscribes to the build quality change event notification (1). Then the release manager, using Team Explorer updates the build quality indicator in the build store via Team Explorer (2), the build quality change event is fired (3), the TFS event service then looks up who is subscribed to the event (4) and then TFS Event Service notifies the subscribers of the Build Quality Change Event - in this case TFS Deployer is notified (5). You can have one or more TFS Deployer installations listening across multiple target machines. When TFS Deployer is notified it doesn’t initially know whether it needs to do anything. To determine this it grabs a deployment mapping file from a well known location in the version control store (6).

The deployment mapping file lists out each of the servers and what that server should do in the event that a build is transitioned from quality state to another. What happens is encapsulated in a PowerShell script file (*.ps1) and once that script file is identified TFS Deployer will instantiate a PowerShell host environment and execute the script (7).

TFSDeployerDiagram.gif

Last edited Jul 6, 2010 at 8:22 AM by jstangroome, version 4

Comments

MattLaw75 Nov 16, 2011 at 10:08 AM 
This looks very very interesting. Can I ask one question?
If I user a PowerShell script to update the build quality (as part of a build step), I would need the subsequent PowerShell scripts that were triggered by your event service, to be working with the same workspace ChangeSet/Label?

Our build and tests take over 15 minutes to run, so its perfectly possible that before the build quality is updated, another developer may have checked in new code, so for us, any subsequent triggered activity should continue to work on the same label that triggered the build quality change.

Many thanks,

Matt