Release Guide
This document outlines a language- and framework-agnostic process for creating a release version of any project — whether it's a Python package, backend app, frontend app, or any other software. It uses Conventional Commits and Semantic Versioning for consistency and automation.
1. Prepare for Release
Ensure all features and fixes are merged into main
- Complete and test all features on feature branches.
- Merge into the
main(ormaster) branch using Pull Requests (PRs). - Use Conventional Commits for all commit messages.
Example commit types:
feat: New featuresfix: Bug fixeschore: Maintenance tasksrefactor: Code improvements without changing behavior
2. Run Tests and Code Quality Checks
Automated CI/CD pipelines should handle:
- Unit and integration tests
- Linting and static analysis
- Security or policy checks
Ensure all pipelines pass before proceeding with a release.
3. Versioning Strategy
We use Semantic Versioning (SemVer): MAJOR.MINOR.PATCH
Release cadence:
- MAJOR: Breaking changes – released monthly.
- MINOR: New features – released every Friday.
- PATCH: Bug fixes – released as needed.
The versioning should be updated automatically by CI/CD tools or manually by editing the designated version source (e.g., VERSION file, project metadata).
4. Tag the Release in Git
The release should be tagged in version control using the format vX.Y.Z. This can be handled by automation or done manually.
Ensure the tag is pushed and referenced in release notes.
5. Create Release Notes
Generate release notes based on Conventional Commits:
- Summarize added features, fixes, and changes.
- Categorize by type (Features, Fixes, Chores, etc.).
- Link to related issues or pull requests.
CI/CD pipelines may auto-generate these or require manual entry in the version control platform (e.g., GitHub, GitLab).
6. Distribute the Release
Depending on the project type, releases may be published to:
- Package registries (e.g., PyPI, npm)
- Cloud platforms or app stores
- Static hosting providers
- Container registries
Your CI/CD system should be configured to handle distribution automatically.
Summary Checklist
- Merge all code to
main - Ensure Conventional Commits are used
- CI/CD pipelines pass
- Update version according to schedule
- Tag the release
- Generate and publish release notes
- Distribute or publish release