This document outlines the release process for the DeployStack application. We maintain separate versioning for our frontend and backend services, which allows us to release updates independently.
DeployStack uses release-it to automate our release process. Each service (frontend and backend) has its own release configuration and GitHub workflows.
Our release process follows these steps:
- Version Bump: Update version numbers in package.json
- Changelog Generation: Automatically update CHANGELOG.md based on commit messages
- Git Operations: Create git tag, commit version changes
- GitHub Release: Create a GitHub release with release notes
- Notifications: Notify team of successful release
There are two methods to create a release:
This is the recommended approach for team environments:
- Go to the GitHub Actions tab in the repository
- Select either "Frontend Release PR" or "Backend Release PR" workflow
- Click "Run workflow"
- Select options:
- Type: auto (based on commit messages), patch, minor, or major
- Beta: Whether this is a pre-release
- Run the workflow
- Review the automatically created PR
- Merge the PR to trigger the actual release
The PR-based approach allows for:
- Team review before release
- Additional testing
- Documentation updates
- Final approval process
For immediate releases without the PR review process:
- Go to the GitHub Actions tab in the repository
- Select either "Manual Frontend Release" or "Manual Backend Release" workflow
- Click "Run workflow"
- Select the version increment type and whether it's a beta release
- Run the workflow
This approach will immediately:
- Bump the version
- Update the changelog
- Create a git tag
- Push to GitHub
- Create a GitHub release
We follow Semantic Versioning (SemVer):
- Major (1.0.0): Incompatible API changes
- Minor (0.1.0): Add functionality in a backward-compatible manner
- Patch (0.0.1): Backward-compatible bug fixes
- Pre-release (1.0.0-beta.1): Pre-release versions
Each service (frontend and backend) maintains its own version number.
Each release creates:
- Git tag (prefixed with service name)
- Updated CHANGELOG.md
- GitHub release with release notes
- Version bump in package.json
- Docker images with appropriate version tags:
deploystack/frontend:latestdeploystack/frontend:v{version}deploystack/backend:latestdeploystack/backend:v{version}
Common issues and solutions:
If using the PR-based approach, ensure your PR has both:
- The correct service label (
frontendorbackend) - The
releaselabel
Ensure your commit messages follow the Angular convention with proper scopes as detailed in CONTRIBUTING.md. Only certain commit types (feat, fix, perf) will appear in the changelog by default.
If commits appear in the wrong changelog, check that you're using the correct scope in your commit messages (e.g., frontend, backend).
We use JavaScript-based configuration files (.release-it.js) instead of JSON to support advanced filtering of commits by scope. If you need to modify the release configuration, edit these files rather than looking for JSON files.