How to avoid intersecting dependencies in personal builds?

Hello

Our simplified scenario looks like this:

  • Build config "Compile" creates a .NET assembly from our sources
  • Build config "Inspection" gets the assembly from "Compile" and and verifies it using FxCop
  • Build config "Smoke Tests" gets the assembly from "Compile" and executes the smoke NUnit tests


This was set up with artifact (with option "last finished build") and snapshot dependencies from "Inspection" towards "Compile" and from "Smoke Tests" towards "Compile" to assure that personal builds on "Inspection" or "Smoke Tests" really get the DLL based on the source code changes of the personal build.

The problem is that triggering a personal build on "Inspection" and "Smoke Tests" results in the following error in the log file

2009-01-26 12:08:04,866[bject]].ERROR mmitAction - Failed to send personal build for: Selected build configurations can not be started in one remote-run:
“Focus Trunk :: Inspection”: Cannot add to queue build configuration Smoke Tests for testing and Inspection simultaneously because these build configurations have intersecting dependencies.
Please start builds in these configurations one by one.
“Focus Trunk :: Smoke tests”: Cannot add to queue build configuration Smoke Tests for testing and Inspection simultaneously because these build configurations have intersecting dependencies.
Please start builds in these configurations one by one.


We do not really understand why there should be a conflict triggering the two builds. Will this be fixed in future versions? What could be proposed as a workaround is to set up a build chain (Compile -> Inspection -> Smoke Tests) but with the disadvantages that the builds won't run in parallel and that the smoke tests won't be run when inspection fails.

Any ideas?

Thanks
Marcel

1 comment
Comment actions Permalink

In brief this is a design flaw in TeamCity which we hope to address soon. Please watch/vote for this issue: http://jetbrains.net/tracker/issue/TW-6875

0

Please sign in to leave a comment.