Deployment Approvals
Require approval before deploying production infrastructure. GitHub environments provide approval gates and environment-specific credentials while Atmos selects and deploys the stack.
Use Setup Atmos to pin the Atmos container version, enable native CI reporting, and configure authentication and permissions for your repository.
Workflow
GitHub Actions environments buy you three things: per-environment secrets and variables, required manual approvals before the job runs, and deployment history visible in the GitHub UI. Wire one in by adding environment: to the deploy job:
The GitHub environment (prod) and the Atmos stack (-s prod) are independent concepts — one gates the workflow run, the other selects the stack configuration. Many teams happen to name them the same; nothing requires it.
By default (concurrency.queue: single), a GitHub Actions concurrency group holds at most two
runs at a time: one in progress and one pending. Triggering a third run cancels the
pending one and takes its place — this eviction happens regardless of cancel-in-progress, so
intermediate triggers can be silently dropped. Setting cancel-in-progress: true additionally
cancels the in-progress run itself, which can interrupt a Terraform apply and leave a remote
state lock that needs manual recovery. Setting queue: max instead allows up to 100 pending runs
before any get canceled, but it is still not a FIFO deployment queue and cannot be combined with
cancel-in-progress: true.
Remote state locking only prevents concurrent writers — it doesn't protect against a partially
applied change or automatically recover an interrupted run. Inspect the affected resources,
confirm the previous run has actually stopped, and only then run
atmos terraform force-unlock before retrying the apply.
GitHub environments add approval gates and merge queues order merges, but neither guarantees
deployment execution order — reach for an explicit promotion workflow or deployment controller
when you require that.