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/*