Release Process
This document describes the process for releasing a new version of the application to production.
Overview
The release process involves creating a release pull request from develop to main, publishing a GitHub release which triggers automated deployment workflows, and monitoring the deployment across all services.
Release Process
1. Create Release Pull Request
- Create a new Pull Request from
develop→main - Name the PR:
release vX.X.XX- Check existing tags to determine the next version number
- Follow semantic versioning principles (MAJOR.MINOR.PATCH)
- Increment the version appropriately based on the changes
2. Merge the Release PR
Important
Use Merge (not Squash & Merge) to preserve the commit history and maintain traceability of all changes included in the release.
- Review all changes in the PR
- Ensure all tests pass
- Click Merge (not Squash & Merge)
3. Create GitHub Release
- Navigate to the GitHub repository
- Click Releases → Draft a new release
- Configure the release:
- Tag: Enter the new tag version (e.g.,
vX.X.XX)- GitHub will propose to create the tag automatically
- Target: Select
mainbranch - Click Generate release notes to automatically populate the release description with commits and pull requests
- Tag: Enter the new tag version (e.g.,
- Review the generated release notes and edit if necessary
- Click Publish release
- This will automatically trigger the deployment workflow
4. Monitor GitHub Actions
- Navigate to the Actions tab in the GitHub repository
- Monitor the release workflow execution
- Ensure all jobs complete successfully:
- Build jobs
- Test jobs
- Deployment jobs for each service
5. Monitor Service Deployment
After GitHub Actions complete, monitor the actual deployment of services:
Option 1: Using Datadog
Option 2: Using AWS ECS (Elastic Container Service)
- Log into AWS Console
- Navigate to ECS → Clusters
- Select the appropriate cluster (production)
- Monitor each service:
- Check task definitions are updated to the new version
- Verify new tasks are running successfully
- Confirm old tasks are draining and stopping properly
- Monitor deployment events and logs