Custom Steps Overview
Custom steps let you extend DevRamps with your own deployment logic. When the built-in step types don't cover your use case, you can write a custom step that runs any code you need.
Most users don't need custom steps
The built-in step types cover the most common deployment patterns (ECS, EKS, Terraform, CodeDeploy, EC2, scripts, and database migrations). Only create custom steps if the built-in types don't meet your needs. If you're just getting started with DevRamps, you can skip this section entirely.
When to Use Custom Steps
Use custom steps when you need to:
- Deploy to a service or platform not covered by built-in steps (e.g., a third-party hosting provider).
- Run custom validation or health checks.
- Integrate with external systems (e.g., send a Slack notification, invalidate a CDN cache).
- Implement organization-specific deployment patterns.
Architecture
Custom steps are organized into step registries:
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Step Registry │ │ DevRamps │ │ Pipeline │
│ (GitHub repo) │────▶│ Builds & │────▶│ Uses │
│ │ │ Registers │ │ CUSTOM:* steps │
│ - SDK code │ │ your steps │ │ in deployments │
│ - Step logic │ │ │ │ │
└──────────────────┘ └──────────────────┘ └──────────────────┘
- You create a step registry -- a GitHub repository containing your custom step code, built with the DevRamps SDK.
- DevRamps builds and registers your steps whenever you push code to the registry repository.
- Your pipelines reference custom steps using the
CUSTOM:*type prefix.
How Custom Steps Execute
When a pipeline step with a CUSTOM:* type runs:
- DevRamps provisions an isolated VM (EC2 instance).
- Your step registry code bundle is downloaded and extracted.
- Your step's execution logic runs with the provided parameters.
- Results are reported back to DevRamps (success, failure, or further actions like polling or approval).
- Step logs are streamed to the dashboard in real time.
Custom Step Capabilities
Custom steps support several execution patterns:
| Pattern | Description |
|---|---|
| Simple (one-shot) | Run once and return a result. Best for quick operations. |
| Polling | Start a long-running operation, then periodically check for completion. Best for deployments that take time. |
| Approval | Request manual approval before executing. Best for destructive or sensitive operations. |
| Polling + Approval | Combine both patterns for maximum control. |
Next Steps
- Writing Custom Steps -- Build steps with the DevRamps SDK.
- Step Registries -- Set up a step registry repository.
- Using Custom Steps -- Reference custom steps in your pipelines.