Skip to main content
A step is the smallest unit of work in a pipeline. Every action step shares a common shape — id, optional name, timeout, and if condition — and adds fields specific to its type. Wrap steps in parallel or group blocks to control how they run. See Pipelines overview. Steps fall into three categories:
  • Module steps act on a module instance through its build or deploy manager: build, deploy, rollback.
  • CI steps run on provisioned compute that you configure with an infrastructure block: build:image, build:static, custom, terraform:plan, terraform:apply.
  • Control-flow steps shape the run itself: approval, sleep, trigger:pipeline.
For every field, default, and nested type, see the pipeline configuration schema.

Module steps

build

Triggers a build for a module instance using the module’s own build configuration. Reference the module instance by unique ID (mi_…), environmentGivenId.moduleGivenId, or projectGivenId.environmentGivenId.moduleGivenId. Pass build parameters through input; outputs such as image_digest are available to later steps.
See BuildStep schema.

deploy

Triggers a deployment for a module instance using the module’s deploy configuration. Commonly consumes a preceding build’s output to pin the exact artifact. Concurrency is managed by the deploy manager lock, not the pipeline scheduler.
See DeployStep schema.

rollback

Reverts a module instance to a specific previous deployment by deployment_id. Use it in a rollback block to recover automatically when a pipeline fails.
See RollbackStep schema.

CI steps

CI steps run on compute you provision through an infrastructure block, which selects an execution environment or an AWS account, region, instance type, and size. See StepInfrastructure.
The nixpacks builder is deprecated for pipeline CI steps. Use railpack for automatic framework detection.

build:image

Builds a Docker image from a git source and pushes it to one or more ECR destinations. Build with a dockerfile or let railpack auto-detect the language and framework.
See BuildImageCiStep schema.

build:static

Builds static assets from a git source and uploads them to one or more S3 destinations. Build with a dockerfile or railpack.
See BuildStaticCiStep schema.

custom

Runs arbitrary shell commands on provisioned compute — tests, linters, migrations, or any scripted task. Optionally check out a git source, install tools with setup actions, and pass environment_variables.
See CustomCommandCiStep schema.

terraform:plan

Generates a Terraform or OpenTofu plan and uploads the plan file to S3 for a later apply. Set plan_type to destroy to plan a teardown. Supply input variables with terraform_variables or terraform_variable_files.
See TerraformPlanCiStep schema.

terraform:apply

Applies a plan file produced by a preceding terraform:plan step. Reference the plan with plan_file_uri, typically from the plan step’s output.
See TerraformApplyCiStep schema.

Control-flow steps

approval

Pauses the pipeline until a user approves through the dashboard or REST API. Use it to gate production deployments behind a manual review.
See ApprovalStep schema.

sleep

Pauses execution for a fixed duration_ms. Useful for spacing out steps or for testing and debugging pipeline behavior.
See SleepStep schema.

trigger:pipeline

Starts another pipeline run and passes inputs to it. Optionally pin a pipeline_version_id or override behavior per variant with run.
See TriggerPipelineStep schema.