Complete build and deploy web documents ai to UAT and PROD
As a DevOps Engineer
I want to extend the CI/CD pipeline to deploy the Documents AI UI application to UAT and PROD environments
So that we can promote tested releases through our complete deployment pipeline with proper environment-specific configurations and infrastructure provisioning
Acceptance Criteria
1. Terraform Infrastructure Provisioning
Given UAT and PROD environments need Azure infrastructure
When deploying to these environments
Then the following Terraform artifacts must be created and applied:
-
Terraform module for AKS cluster provisioning (
uat-eus2-adc-aks-001andprod-eus2-adc-aks-001) -
Terraform module for resource groups (
uat-eus2-adc-app-rg-001andprod-eus2-adc-app-rg-001) -
Azure Managed Identity (UAMI) for workload identity in UAT and PROD
-
Azure Container Registry access permissions for UAT and PROD service principals
-
Istio gateway configuration for UAT (
documentsai.uat.claitdev.com) and PROD (documentsai.claitdev.com) -
Network policies and security groups aligned with production standards
-
Azure Key Vault for secrets management (if not using existing)
2. GitHub Environments Configuration
Given secure deployments require proper environment configurations
When setting up UAT and PROD in GitHub
Then the following must be configured:
-
GitHub environment
uatcreated with required approvers -
GitHub environment
prodcreated with required approvers and protection rules -
Environment-specific secrets configured:
- NPM_TOKEN for package installation
- Environment-specific variables configured:
- AZURE_CLIENT_ID (UAT and PROD service principal IDs)
- AZURE_TENANT_ID
- AZURE_SUBSCRIPTION_ID
- ACR_SUBSCRIPTION_ID
- ACR_NAME
3. Helm Values Files Creation
Given UAT and PROD require environment-specific configurations
When deploying the application
Then the following helm values files must be created:
-
helm/values-uat.yamlwith:
- Environment set to “uat”
- Replica count (minimum 2 for HA)
- Autoscaling configuration (minReplicas: 2, maxReplicas: 20)
- Resource limits appropriate for UAT load
- Istio host: documentsai.uat.claitdev.com
- Azure Workload Identity Client ID for UAT UAMI
- Environment variables (REACT_APP_AZURE_AD_CLIENT_ID, REACT_APP_API_URL, etc.)
-
helm/values-prod.yamlwith:
- Environment set to “prod”
- Replica count (minimum 3 for HA)
- Autoscaling configuration (minReplicas: 3, maxReplicas: 50)
- Resource limits appropriate for production load
- Istio host: documentsai.claitdev.com
- Azure Workload Identity Client ID for PROD UAMI
- Production-grade environment variables
- Pod disruption budget enabled
- Network policy enabled
4. GitHub Actions Workflow Updates
Given the CI/CD pipeline needs UAT and PROD deployment jobs
When code is merged to main branch
Then the workflow must:
- Add
package-deploy-uatjob that:
- Depends on successful package-deploy-qa deployment
- Uses GitHub environment uat
- Sets ENV_ABBR: uat
- Deploys to AKS cluster uat-eus2-adc-aks-001
- Uses resource group uat-eus2-adc-app-rg-001
- Applies helm/values-uat.yaml configuration
- Uses proper image tag from github.sha
- Add
package-deploy-prodjob that:
- Depends on successful package-deploy-uat deployment
- Uses GitHub environment prod
- Sets ENV_ABBR: prod
- Deploys to AKS cluster prod-eus2-adc-aks-001
- Uses resource group prod-eus2-adc-app-rg-001
- Applies helm/values-prod.yaml configuration
- Uses proper image tag from github.sha
- Only runs on main branch (if: github.ref == 'refs/heads/main')
5. Deployment Validation
Given deployments to UAT and PROD must be verified
When the deployment completes successfully
Then the following validations must pass:
-
Health check endpoints return 200 OK
-
Application is accessible via configured Istio hostnames
-
Pod readiness and liveness probes are functioning
-
Autoscaling is properly configured and responds to load
-
Workload identity authentication works correctly
-
Application logs show no critical errors
-
All pods are in Running state with correct replica count
6. Rollback Strategy
Given deployments may need to be rolled back
When issues are detected in UAT or PROD
Then:
-
Helm rollback commands are documented
-
Previous release artifacts are retained in ACR
-
Rollback procedure is tested in lower environments
7. Documentation
Given teams need to understand the deployment process
When the feature is complete
Then:
-
Update
README.mdwith UAT and PROD deployment information -
Document Terraform infrastructure requirements
-
Document required Azure permissions and service principals
-
Create runbook for manual deployments if needed
-
Document environment-specific URLs and access methods
Technical Notes
-
Deployment Flow: SBX → DEV → QA → UAT → PROD
-
ACR: Uses existing
cladevops.azurecr.ioregistry -
Namespace: All deployments use
doc-ainamespace -
Action Versions: Use template-hub actions at appropriate versions
-
Region: All environments use
eus2(East US 2) region
Definition of Done
-
All acceptance criteria are met
-
Successful deployment to UAT environment verified
-
Successful deployment to PROD environment verified
-
Code review completed and approved
-
Documentation updated
-
Terraform state stored securely in Azure Storage
-
No security vulnerabilities introduced
-
Monitoring and alerting configured for UAT and PROD