Am I using Snapshot Dependencies correctly?

First, the setup:
I have 3 configurations set up.  One for Windows, Mac, and Linux each.  They all ask for the same branch from a Mercurial repository.
This is among dozens of other configurations which share the agents that these three configurations use.

What I want:
I want to ensure that, even if the build agents for one or two of the OS platforms are in use, all 3 configurations will eventually build the same revision of the branch, even if the branch updates while one of the configurations is building.  It would eventually build on all 3 configurations again in order to pull in the latest update for a rebuild.

What I'm curious about:
It seems to be the only way to actually do this is to have a 4th "master" configuration which sets up the other 3 configurations as its snapshot dependency.  The master configuration checks for changes and then does nothing but trigger those 3 dependent configurations.  Is this the correct way to do what I want to do?  I feel like I may be missing something important, since having to set up a 4th master every single time I want to add a new branch for parallel building feels like I'm over-working.


You are right, to be able to launch builds of different configurations on synchronized sources you need one more configuration which will depend on all of them. This is indeed looks like unnecessary step, in your case, because you do not need dependencies, but you need synchronized sources. Although, at the moment having the additional configuration seems to be the simplest possible approach.

Another possible way is to write a plugin which will start your builds with synced sources.


One more question.  Using the configuration I explained above, the master configuration triggers the 3 other configurations and stops, but then has a pending task.  What is this pending task that the master wants to eventually get to?


Not sure I understand what happens here. Maybe you can provide a screenshot?


Nevermind, I figured it out.  The master configuration waits for its dependencies to build successfully before it continues on to its own "build" command.  The queued action is just its way of "pausing" to wait for those dependencies.


Please sign in to leave a comment.