It is strait forward to implement a tree-like hierarchy:
1. Build project, put binaries as artifacts.
2. Run several instances of unit tests, code analysys, etc. at the same time using artifcats from step 1 as input (we have like 5 project which are running in parallel at this point).
3. If everything is ok - push build to test environment.
The problem is this: there is a lot of copy-pasting going on between different branches (hotfixes for current release, next big 'subrelease' and the next big release) going on at the same time. For example if for some reason you choose to reconfigure Unit Tests - you need to do it 3 times - once per each 'branch'.
I want to have only the first step to be branch-specific and steps 2 and 3 generic for all existing branches (basically deployment is just a matter of running a bunch of cmd's which are already under version control in the specific branch).
Is it possible to achieve this using TeamCity?
I was thinking about using dependencies, but running build only when one of them is ready, not when all of them are (if you, for example, need 2 dependencies ready - you can configure another one to wait on those two and use it in the target configuration, so the question on waiting on n out of m dependencies seems pretty clear to me). But I have no idea how to configure it.