Release Pipeline
The release pipeline (cicd/release.yaml) is the main build-and-deploy pipeline. It builds Docker images, runs Terraform plans, and deploys applications to Azure Container Apps.
Triggers
The pipeline triggers automatically on:
- Branches:
main,release* - Tags:
web*
PR triggers are disabled (pr: none). Pull requests use the separate PR pipeline.
Batching is enabled -- multiple commits pushed in quick succession are grouped into a single run.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
skipCodeAnalysis | boolean | false | Skip the code analysis stage |
forceApi | boolean | false | Force API build (skip change detection) |
forceWeb | boolean | false | Force Web build |
forceSanity | boolean | false | Force Sanity build |
forceMatchGateway | boolean | false | Force Match Gateway build |
forceApiGateway | boolean | false | Force API Gateway build |
forceGraphqlRouter | boolean | false | Force GraphQL Router build |
updateTurboRepoRemoteCacheImage | boolean | false | Rebuild and push the TurboRepo remote cache image |
updateBaseNodeImage | boolean | false | Rebuild and push the shared base Node image to ACR |
forceEnv | string | auto | Override environment detection (auto, tst, acc, prd) |
Environment Selection
When forceEnv is set to auto (the default), the target environment is determined by the source branch or tag:
| Source | Environment |
|---|---|
Tag containing -rc | acc |
release* branch | acc |
Tag without -rc | prd |
main branch | tst |
Stage Flow
Each app gets its own build, plan, and deploy stage. Stages run in parallel where dependencies allow.
Release Branch Behavior
On release* branches, the pipeline runs in build-only mode:
pushContainerToRegistry: false-- images are built to verify correctness but not pushed to ACRskipPlanRelease: true-- Terraform plan is skippedskipDeploy: true-- deployment is skipped
This allows verifying that cherry-picked commits produce valid builds without triggering a deployment.
Change Detection (TURBO_SCM_BASE)
The TURBO_SCM_BASE variable controls how far back Turbo looks for changes:
| Source | TURBO_SCM_BASE | Rationale |
|---|---|---|
| Tags | HEAD~5 | Detect changes across recent commits |
release* branches | HEAD~1 | Only the latest cherry-pick |
main | HEAD~1 | Changes from the merged PR |
Code Analysis on Release
The release pipeline runs code analysis with all checks disabled by default (runTypeCheck: false, runLinting: false, etc.). Full analysis has already been performed by the PR pipeline.
Code analysis is skipped entirely on tags and release branches.