Approvals
Approvals are safety gates that pause a deployment and require manual review before proceeding. DevRamps supports several types of approval workflows.
Terraform Approval
When a step uses DEVRAMPS:TERRAFORM:SYNTHESIZE, you can configure it to require approval before applying changes:
- name: Synthesize Infrastructure
type: DEVRAMPS:TERRAFORM:SYNTHESIZE
params:
requires_approval: ALWAYS
source: /infrastructure
variables:
environment: ${{ vars.env }}
Approval modes
| Value | Behavior |
|---|---|
ALWAYS | Every Terraform change requires approval, even if only adding resources. |
NEVER | Changes apply automatically without review. |
DESTRUCTIVE_CHANGES_ONLY | Only changes that destroy or modify existing resources require approval. Additions apply automatically. |
Reviewing Terraform changes
When a Terraform step is waiting for approval:
- Go to the deployment in the DevRamps dashboard.
- Click on the pending approval notification.
- Review the Terraform plan, which shows:
- Resources to be created
- Resources to be modified
- Resources to be destroyed
- Click Approve to apply or Reject to fail the deployment.
Who can approve?
Any member of your DevRamps organization can approve or reject pending approvals. There is no role-based approval restriction at this time — all team members have equal approval authority.
How are approvals notified?
Pending approvals are visible in the DevRamps dashboard on the deployment view. There is no automatic email or Slack notification for pending approvals at this time — team members need to monitor the dashboard.
Bake Time
A bake time step pauses the deployment for a specified duration. This gives you time to verify the deployment is healthy before promoting to the next stage.
- name: Bake Period
type: DEVRAMPS:APPROVAL:BAKE
params:
duration_minutes: 5
After the duration elapses, the deployment continues automatically. You can also manually approve early or reject to stop the deployment. There is no timeout on approval steps other than the bake duration — Terraform approvals and test failures will wait indefinitely until a team member takes action.
Bake times are commonly used:
- After an ECS/EKS deployment to observe metrics.
- Before promoting from staging to production.
- As a "cooling off" period after infrastructure changes.
Test Approval
A test approval step runs automated tests and uses the results to decide whether to proceed:
- name: Integration Tests
type: DEVRAMPS:APPROVAL:TEST
params:
testCommand: npm test
timeout: 30
workingDirectory: /tests
testType: jest
| Param | Required | Default | Description |
|---|---|---|---|
testCommand | Yes | -- | Shell command to run tests. |
timeout | No | 30 | Timeout in minutes. |
workingDirectory | No | -- | Working directory for test execution. |
testType | No | "generic" | Test framework: "generic" or "jest". Jest provides enhanced reporting. |
environmentVariables | No | -- | Environment variables for the test run. |
- Tests pass: Deployment continues automatically.
- Tests fail: Deployment is blocked. Review test output in the step logs.
Custom Step Approval
Custom steps built with the DevRamps SDK can also request approval. When a custom step returns an APPROVAL_REQUIRED status, the deployment pauses until a user approves or rejects.
See Writing Custom Steps for details.
Pipeline Update Approval
The top-level pipeline_updates_require_approval setting controls whether changes to your pipeline.yaml require approval:
pipeline:
pipeline_updates_require_approval: ALWAYS
| Value | Behavior |
|---|---|
ALWAYS | Every pipeline definition change requires approval. |
NEVER | Pipeline changes take effect immediately. |
DESTRUCTIVE_CHANGES_ONLY | Only changes that remove stages, steps, or artifacts require approval. |
This is separate from Terraform approval -- it governs changes to the pipeline definition itself.
Approving from Slack
If your organization has Slack integrated and a pipeline subscribes to the approval_required event, approval requests are posted to your configured Slack channel with Approve and Reject buttons. Clicking these buttons processes the approval through the same flow as the web UI.