I have a build chain in TeamCity that goes A -> B -> C. However, I'd like to also be able to run C without rerunning A and B (by default), even if there are changes available. I can check "Do not run new build if there is a suitable one", but then if there are changes available, the latest B build won't be suitable. What I really want is for C to default to the latest changes/revisions in B, which should allow C to reuse the latest suitable build of B, rather than triggering a new one off the latest changes. If someone really wants to trigger A and B by running C, they can adjust the C build to use the latest changes, but it wouldn't happen by default.
My specific usecase is that C is a UI testing suite. If we want to run the full build chain up to the latest changes, we have a composite build which contains B and C as snapshot dependencies. Our typical process is to run the composite build when we want to fully redeploy the services in the environment. If we're choosing to run C directly, we don't want fully redeploy the services, we just want to run the UI tests on the services that are currently running. I think that means the changes specified in C should be the latest changes in B, which would guarantee that the latest B build could be reused.
To clarify: I'm not looking for a solution that involves copying/duplicating build configurations. That's what we currently do, and it isn't ideal because TeamCity doesn't understand how the copied build configurations are related to each other/actually kind of the same thing. If I understand TC correctly (doubtful perhaps :p), what I'm asking for reflects most accurately what's really going on underneath- which is what I really want.
Thanks for any help!