How are people setting up their build configurations when using Git and Git-flow?  I have several tasks I want to complete:
- Commit - compile, run static code analysis, unit test, package
 
- Integration Test - run integration tests
 
- Deploy to Test - deploy the app to a test environment
 
- Functional Test - run end-to-end functional tests
 
- Deploy to QA - manual pull into a QA environment that runs smoke tests
 
With master, develop, release feature branches I'm curious how people map them into the build processes.
                 
                                                                            
                            We currently have
- 
CI Build
- The VCS Root has a branch specification that includes develop, feature/*, release/*, hotfix/* and master
 
- A VCS commit trigger for all branches
 
- Pull request build feature branches and link build results and approve
 
- Auto-merge master -> develop 
 
 
- 
Release notes build
- A snapshot on CI Build
 
- Generates release notes from commits and commits it
 
 
- 
Deploy to Dev Build
- A snapshot on CI Build
 
- Scheduled to deploy twice a day
 
- Only develop branch is deployed
 
 
- 
Deploy to UAT Build
- Manual step
 
- A snapshot on CI Build
 
- Only release/*, hotfix/* or master can be deployed to UAT
 
 
- 
Deploy to Prod
- Manual step
 
- A snapshot on Deploy to UAT Build
 
- Only master can be deployed here (when release or hoftix is closed master needs to be deployed to UAT first for smoke testing)
 
 
Teamcity auto-merge doesn't allow for wildcards, so we are working on our own method to keep branches in sync
- master -> develop, release/*, hotfix/*
 
- develop -> feature/*