A plugin to integrate TFS work items with TeamCity. Work item details will appear alongside any changeset associated to it directly in the TeamCity UI.
The plugin works when using TFS for both version control and issue tracking.
are available directly from the build server, you can download the latest build using the Download tabs on the right of the top toolbar
or selecting the zip file in the artifacts of each build. Be sure to download the correct version for the TeamCity release you are running.
To install simply copy the downloaded zip file into the TeamCityData/plugins
folder and restart TeamCity. Then you'll need to set up the integration using the administration section of the TeamCity UI and select the plugin as your chosen issue tracker.
The plugin targets TeamCity >= 6.x and TFS 2013.
Versions for TFS 2012 and TFS 2010 are tagged in source control, you can easily build them yourself or you can drop me a line.
How it works
There are two parts collaborating to make the integration work: a Java plugin running inside TeamCity and a standalone .NET executable hosting the TFS API and interacting with the TFS server.
The Java side shells out the .NET executable and uses it to carry out TFS operations, providing it inputs as command line arguments and reading outputs from the standard output and error streams.
Reading issues in TeamCity is fundamentally a two-step process:
- extracting issue mentions from VCS changes, i.e. a issue ID from a commit
- retrieving issue data from an issue ID
This plugin implements #1 in a substantially different way from how it is designed in TeamCity. In most VCSs changes are associated to issues by
the issue in the change message (i.e. fixed subtle bug #1234
), whereas in TFS the association is usually done in a proprietary way which creates the association at the TFS level when a change is committed using Visual Studio or a similar
As a consequence #1 in other VCSs is only a matter of matching a pattern against the commit message, whereas in TFS it requires an interaction with the TFS server (retrieving all the issue IDs associated to every commit), which is much, much slower.
This fundamental difference inevitably makes the plugin perform even sensibly worse than plugins which integrate with other VCSs and issue trackers.
To make this difference less noticeable the data is cached and not read from TFS every time, but at the very least and especially if you have a big TFS setup with many projects and work items the first display of the TeamCity issues tab can take even a long