Release Process
This document describes how we promote changes to Test and Production using GitHub Actions and Terraform.
Automated deployments to Test
On merge to main:
1. Version tagging: the workflow locates the latest semver tag (e.g., v1.2.3), increments it (e.g., v1.2.4), and tags the merge commit.
2. Application deploys: API, Frontend, and Admin deploy to the Test environment via their respective GitHub workflows.
3. Validation: automated tests (unit, integration, accessibility, e2e, security scan) run via dedicated workflows.
Outcome: Test reflects the latest main plus a new tag.
Infrastructure
Infrastructure changes are managed in src/Infrastructure/terraform and applied by the GitHub workflow dedicated to Azure infrastructure.
Guidelines:
- Keep Terraform changes small and isolated; open a PR with a clear plan summary.
- Merges to main will plan/apply to the Test subscription/environment as configured by the workflow.
- Promote the same Terraform state/config to Production via the Production run of the infrastructure workflow (see below).
Deployments to environments
Production deployments are manual after successful validation in Test.
1) GitHub Release (primary)
- Choose a tag to release (e.g.,
v1.2.4). - In GitHub, go to Releases → Draft a new release.
- Select the tag, add release notes, and Publish.
- Publishing triggers Production deployment workflows for API, Frontend, and Admin.
2) Manual workflow dispatch (alternative)
Use for hotfixes or exceptional cases.
- Open GitHub → Actions.
- Select the relevant deploy workflow (API, Frontend, Admin, or Infrastructure).
- Click “Run workflow”.
- Choose a branch or specific tag, select the target environment (Test or Production), and any optional flags (e.g., clear cache where available).
- Run workflow to start deployment.
Order of operations for Production
- Infrastructure (if required): run the Infrastructure workflow for Production to apply Terraform.
- Applications: run or allow the release-triggered workflows to deploy API, Frontend, and Admin.
- Post‑deploy checks: confirm health, logs, and monitors; verify smoke tests.
Rollback
- Applications: re-run the deploy workflow with a previous known-good tag to the affected environment.
- Infrastructure: revert the Terraform change (git revert or follow-up PR) and re-apply via the Infrastructure workflow.
Notes
- Kept environment configuration in code; avoided manual portal changes.
- We have alerts plus we manually monitor deployments via GitHub Actions logs and environment protection rules.