I think I finally groked snapshot dependencies. I suggest that they be renamed "Wait for Me!" dependencies....
So, my problem is that I have an aggregation task (a debian linux image build to be precise) which is expensive, and depends on dozens of other builds (debian package builds). My setup is to add a build dependency trigger for every package build and a snapshot dependency to every package build, with "Do not run new build if there is a suitable one" and "Only use successful builds from suitable ones" checked (the default), and finally add an artifact depednency to pull in the build package (or rather, the reference to the trivial debian repo where the package lives).
This does appear to be doing what I want: rebuild the image whenever some package gets updated, and wait for all runninjg package builds to complete before starting an image build.
So, two questions:
- Is this the intent of the inventor - what else is there to consider?
- why is TC complaining about "Use latest good build" in the artifact dependency?
I would like to note, btw, that it would really be very nice if "creating a dependency" could be templated and stored as part of the image build template. With this setup, every dependency requires three separate operations, each involving the navigation of a huge, unwieldy dropdown and the correct, repetitive addition of the exact same metadata for every dependency. A dependency template would allow me to simply say "My build depends on this other build" once anmd have the dependency types (including the build dependency trigger and all the other metadata pulled from templates.
I also maintain that it would still be nice if the build dependency trigger had a "quiet period" setting, so that I can catch late coming changes to other packages without wasting an expensive image build.