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
infrastructureblock:build:image,build:static,custom,terraform:plan,terraform:apply. - Control-flow steps shape the run itself:
approval,sleep,trigger:pipeline.
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.
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.rollback
Reverts a module instance to a specific previous deployment bydeployment_id. Use it in a rollback block to recover automatically when a pipeline fails.
CI steps
CI steps run on compute you provision through aninfrastructure 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 adockerfile or let railpack auto-detect the language and framework.
build:static
Builds static assets from a git source and uploads them to one or more S3 destinations. Build with adockerfile or railpack.
custom
Runs arbitrary shell commands on provisioned compute — tests, linters, migrations, or any scripted task. Optionally check out a gitsource, install tools with setup actions, and pass environment_variables.
terraform:plan
Generates a Terraform or OpenTofu plan and uploads the plan file to S3 for a later apply. Setplan_type to destroy to plan a teardown. Supply input variables with terraform_variables or terraform_variable_files.
terraform:apply
Applies a plan file produced by a precedingterraform:plan step. Reference the plan with plan_file_uri, typically from the plan step’s output.
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.sleep
Pauses execution for a fixedduration_ms. Useful for spacing out steps or for testing and debugging pipeline behavior.
trigger:pipeline
Starts another pipeline run and passesinputs to it. Optionally pin a pipeline_version_id or override behavior per variant with run.