Environments
The platform deploys to three environments: TST (test), ACC (acceptance), and PRD (production). Each environment has its own Azure resources, service connections, and variable configuration.
Environment Variable Files
Environment-specific variables are defined in cicd/vars/:
cicd/vars/
├── tst.yaml
├── acc.yaml
└── prd.yamlEach file defines the same set of variables with environment-specific values:
| Variable | Description |
|---|---|
azureServiceConnection | Azure DevOps service connection name |
resourceGroupName | Azure resource group |
webFeyenoordAppName | Web app name (feyenoord site) |
webDeKuipAppName | Web app name (de-kuip site) |
apiAppName | API app name |
apiHostname | API hostname for health checks and Algolia |
appInsightsName | Application Insights resource name |
cdnStorageAccount | Azure Storage Account for CDN static assets |
matchGatewayAppName | Match Gateway app name |
terraformResourceGroupName | Resource group for Terraform state backend |
terraformStorageAccountContainerName | Blob container for Terraform state |
terraformStorageAccountName | Storage account for Terraform state |
terraformWorkingDirectoryBase | Base path to Terraform configs |
Naming Conventions
Resources follow the pattern feye-<component>-<env>-<type>:
| Example | Pattern |
|---|---|
feye-websites-tst-rg | Resource group |
feye-feyenoord-tst-fe-as | Web app (feyenoord, test) |
feye-web-feyenoord-tst-ca | Container App (web, feyenoord, test) |
feye-websites-tst-ai | Application Insights |
feyewebsitestestcdnst | CDN storage account |
Variable Groups
In addition to the YAML variable files, the pipeline uses Azure DevOps variable groups for secrets and shared configuration:
| Group | Scope | Contains |
|---|---|---|
all-environments | All pipelines | ACR credentials, Turbo token, SonarQube config |
tst | TST deployments | Key Vault secrets, deploy tokens, API keys |
acc | ACC deployments | Key Vault secrets, deploy tokens, API keys |
prd | PRD deployments | Key Vault secrets, deploy tokens, API keys |
The all-environments group is loaded at the pipeline level. Environment-specific groups are loaded in deploy stages via group: ${{ parameters.env }}.
Service Connections
Each environment has a dedicated Azure service connection:
| Environment | Service Connection |
|---|---|
| TST | AzureServiceConnectionTST |
| ACC | AzureServiceConnectionACC |
| PRD | AzureServiceConnectionPRD |
These connections provide the pipeline with Azure credentials scoped to the corresponding subscription or resource group.
Terraform State Backend
Terraform state is stored in Azure Blob Storage, one state file per app per environment:
| Component | TST | ACC | PRD |
|---|---|---|---|
| Storage Account | feyewebsiteststbackend | feyewebsitesaccbackend | feyewebsitesprdbackend |
| Container | tfbackendtst | tfbackendacc | tfbackendprd |
| Resource Group | feye-websites-tst-backend-rg-locked | feye-websites-acc-backend-rg-locked | feye-websites-prd-backend-rg-locked |
The resource groups use Azure resource locks to prevent accidental deletion of state files.
Environment Selection
See Release Pipeline for how the pipeline determines which environment to target based on the source branch or tag.