declarative-deployment-boundary
recognized control-plane commands mutate infrastructure outside Terraform
Why
Imperative control-plane commands and plan-address allowlists split deployment ownership between Terraform and repository-specific orchestration, so drift and safety depend on execution order. Publishing an application artifact is a release operation and remains outside this rule.
Fix
Model the resource, identity, and lifecycle in Terraform; let CI select inputs and apply the saved plan without maintaining a second mutation path.
Examples
jobs: deploy: steps: - run: gcloud run deploy api --image $IMAGE --memory 1Gijobs: deploy: steps: - run: gcloud run deploy api --image $IMAGE --region usjobs: deploy: steps: - run: gcloud run deploy api --image $IMAGE --memory 1Gijobs: deploy: steps: - run: terraform apply saved.tfplanjobs: deploy: steps: - run: pnpm exec wrangler d1 create appjobs: deploy: steps: - run: pnpm exec wrangler deploy --tag $GITHUB_SHAFiles
.github/workflows/*.{yaml,yml}{cloudbuild,deploy,deployments,iac,infra,k8s,scripts,terraform,tools}/**