We have the following build configurations for a project using Git:
- CI: Builds automatically on a VCS trigger
- DEV: Has a snapshot dependency on CI, builds every night and deploys to development servers
- QA: Has a snapshot dependency on QA, builds when we manually tell it to and deploys to QA servers
Currently we're only using the master branch, which isn't using Git to its fullest extent. We intend to create several branches as follows:
- Feature branches for working on individual features
- A Development branch that features get merged to when they are code complete
- A QA branch for commits that we feel are ready for QA and potential release
We now want the CI build to build all branches. That's easy: We simply create a branch specification in the VCS root and set up the VCS trigger and it will run a build against any branches with new commits. (Just as described in "Working with Feature Branches" in the TeamCity documentation.)
However, now things get a little tricky with DEV and QA.
We want the DEV build to only build the Development branch, and still on that schedule.
We want the QA build to only build the QA branch, still whenever we manually tell it to.
How do we achieve these last two points and still maintain our snapshot dependencies?