This directory contains GitHub Actions workflows for CI/CD automation.
Main continuous integration and deployment pipeline that:
- Detects changes in backend, frontend, and landing pages
- Runs tests for changed components
- Deploys to AWS sandbox environment on main branch
- Creates deployment tags for tracking
Triggers:
- Push to main branch (with path filters)
- Manual workflow dispatch
Jobs:
changes: Detects which components changedbackend-test: Runs backend linting and testsfrontend-test: Runs Flutter testsjoin-page-test: Runs Angular join page testsdeploy: Deploys all components to AWS
Promotes a tagged release to the beta environment with full testing and validation.
Triggers:
- Manual workflow dispatch only
Inputs:
ref: Git tag to deploy (tags only)skip_tests: Skip integration tests (default: false)
Jobs:
validate-inputs: Validates deployment inputspre-deployment-tests: Runs backend and frontend testsdeploy-to-beta: Deploys to beta environmentcreate-github-release: Creates or updates GitHub releasedeployment-notification: Sends deployment notifications
Usage: Use this workflow to promote a sandbox deployment to beta for staging validation.
Deploys a validated release to the production environment with approval gates and smoke tests.
Triggers:
- Manual workflow dispatch only
Inputs:
ref: Git tag or branch to deploy (use "main" for urgent deployments)beta_url: Beta environment URL for reference (optional)release_url: GitHub release URL (optional)skip_smoke_tests: Skip production smoke tests (default: false)urgent_deployment: Urgent deployment from main branch (default: false)
Jobs:
create-deployment-tag: Creates deployment tag for urgent deploymentsvalidate-production-deployment: Validates deployment inputsproduction-deployment-approval: Requires manual approval (uses GitHub environment protection)deploy-to-production: Deploys to production environmentproduction-smoke-tests: Runs basic smoke testsupdate-github-release: Updates GitHub release with production infocreate-urgent-deployment-issue: Creates tracking issue for urgent deploymentsdeployment-notification: Sends deployment notifications
Usage: Use this workflow to deploy validated releases to production. Normal flow: sandbox → beta → production. For emergencies, use urgent_deployment=true with ref=main.
Bootstraps AWS CDK environment for a specific AWS account and region.
Triggers:
- Manual workflow dispatch only
Inputs:
environment: sandbox, beta, or prodregion: AWS region to bootstrap
Usage: Run this once per AWS account/region combination before deploying CDK stacks.
Configure these secrets in your GitHub repository settings:
AWS_ROLE_ARN: IAM role ARN for sandbox deploymentsAWS_ROLE_ARN_BETA: IAM role ARN for beta deploymentsAWS_ROLE_ARN_PROD: IAM role ARN for production deployments
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::<ACCOUNT_ID>:oidc-provider/token.actions.githubusercontent.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
},
"StringLike": {
"token.actions.githubusercontent.com:sub": "repo:<OWNER>/<REPO>:*"
}
}
}
]
}Dependabot is configured to automatically check for dependency updates weekly:
- npm packages (root and join_page)
- Flutter/Dart packages
- GitHub Actions versions
Updates are grouped by minor/patch versions to reduce PR noise.
The recommended deployment flow is:
- Development: Push to main branch → CI/CD pipeline runs tests and deploys to sandbox
- Staging: Use promotion-pipeline.yml to deploy a sandbox tag to beta environment
- Production: Use production-deployment.yml to deploy a beta tag to production (requires approval)
For critical hotfixes, you can deploy directly from main to production:
- Set
urgent_deployment=trueandref=mainin production-deployment.yml - A deployment tag will be created automatically
- Approval is still required
- A tracking issue will be created for post-deployment review
Configure these environments in your repository settings for deployment protection:
beta: Optional reviewers for beta deploymentsproduction-approval: Required reviewers for production approval gateproduction: Production environment (deployment happens here after approval)