Branches map to environments
We keep the pipeline simple:
developdeploys automatically to the integration environment.masteris paired with semantic version tags for production releases.
The split keeps day-to-day iteration fast while giving releases a single, traceable entry point.
Rhythm of a feature release
- Branch off develop using a date + feature slug like
feat/20251010-user-login. - Commit locally in small, focused steps.
- Push and open a PR back to
develop. The moment the PR appears, CI takes over.
CI tasks cover the basics:
- Build the project
- Lint / static analysis
- Unit tests
If any of these fail, the merge button stays disabled so reviewers can concentrate on logic instead of chasing build errors.
After merging into develop
Once the PR is approved and merged with “Rebase and merge”, the CD workflow kicks in:
- Build an artifact, e.g.
my-app:dev. - Push it to the registry.
- Deploy to the staging server through SSH or scripted automation.
A few minutes later the team can run full-stack verification against the latest code.
Shipping to production
When staging looks good, the release captain:
- Opens a PR from
developtomasterand merges using “Squash and merge”. - Tags the resulting commit with a semantic version such as
v1.2.0. - Pushes the tag, which triggers the production pipeline.
The release script follows a predictable sequence:
git checkout master
git pull origin master
git tag -a v1.2.0 -m "Release v1.2.0"
git push origin v1.2.0
From there the pipeline:
- Builds a tagged artifact (Docker image, package, etc.).
- Pushes it to the registry and deploys to production.
- Notifies the team to run post-release verification.
Release checklist
- Double-check production config values.
- Confirm database migrations ran cleanly.
- Ensure monitoring and alerts cover the new surface area.
- Assign someone to watch metrics for the first 30 minutes after release.
Closing thoughts
A predictable mapping between branches and environments, strict CI gates, and tag-driven releases keep the pipeline calm. Once the routine sticks, continuous delivery feels far less risky than batching everything into a monthly mega-release.