Skip to content

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

  1. Create a new Pull Request from developmain
  2. 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.

  1. Review all changes in the PR
  2. Ensure all tests pass
  3. Click Merge (not Squash & Merge)

3. Create GitHub Release

  1. Navigate to the GitHub repository
  2. Click ReleasesDraft a new release
  3. Configure the release:
    • Tag: Enter the new tag version (e.g., vX.X.XX)
      • GitHub will propose to create the tag automatically
    • Target: Select main branch
    • Click Generate release notes to automatically populate the release description with commits and pull requests
  4. Review the generated release notes and edit if necessary
  5. Click Publish release
    • This will automatically trigger the deployment workflow

4. Monitor GitHub Actions

  1. Navigate to the Actions tab in the GitHub repository
  2. Monitor the release workflow execution
  3. 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

Container Deployment View

Option 2: Using AWS ECS (Elastic Container Service)

  1. Log into AWS Console
  2. Navigate to ECSClusters
  3. Select the appropriate cluster (production)
  4. 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
  5. Monitor deployment events and logs