Pipeline Steps Reference
A pipeline automates work across Cycle by running an ordered sequence of steps. Each step performs one concrete action, like importing an image, reimaging a container, deploying a stack build, or moving a deployment tag. Steps are grouped into stages, run in order, and triggered by a trigger key, directly in the UI, or via the API. Pipelines are the backbone of GitOps on Cycle: a git push or CI job fires the key, and the pipeline does the rest.
This page is the complete catalog of step types. There are 30, grouped by the resource they act on: images, containers, environments, deployments, stacks, webhooks, and one control step (sleep). Use it to look up exactly which fields a step accepts and which are required.
Using this Guide
This guide, like the portal itself, is an extension of the pipelines schemas found in the public API. For each step, the step name as provided in the portal and the API spec name are side by side. There are also some custom types shown within the Type column. These can be referenced and found in the spec as well if unclear.
To look deeper at the implementation, check out the full API spec here.
How every step is shaped
Each step shares the same outer envelope, then carries a step-specific details payload. The envelope is identical everywhere, so the per-step tables below document only the details object — the part that changes.
Field | Type | Required | Description |
|---|---|---|---|
| string (enum) | ✓ | The step type — the discriminator that selects everything else. The exact value is shown in each step heading (e.g. |
| string | — | A name for this step, so later steps (or webhooks) can reference its output via |
| boolean | — | When |
| object | ✓ | The step-specific payload documented in each table below. |
Reading the tables
A few conventions recur throughout, so they're defined once here rather than repeated in every row:
FluidIdentifier— how steps point at a resource. It takes three forms:id:<id>(a raw resource ID),resource:<identifier>(a compound selector, e.g.resource:cluster:dev,env:demo,container:api), orfrom:<stage/step>(the output of an earlier step). Reach forfrom:to chain steps — for example, create an image in one step, then reference it withfrom:in the import step that follows.VariableString— a string that may contain{{variable}}placeholders, resolved at run time from the pipeline's variables.Duration— a time string such as30sor5m.- The Required column reflects the spec:
✓means the field is required whenever its parent object is present. Where a parent object is optional but has its own required children, that's called out in a footnote under the table.
Image steps
Create Image — image.create
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The image source to create the image from. |
| string | null | — | Optional name for the created image. |
| map<string,string> | null | — | Build args passed into the image build process at run time. |
| string | null | — | For |
| string | null | — | For |
Import Image — image.import
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The image to import (fetch/build into a usable, immutable image). |
Create & Import Image — image.create-import
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The image source to create from, then import in one step. |
| string | null | — | Optional name for the created image. |
| map<string,string> | null | — | Build args passed into the build process at run time. |
| string | null | — | For |
| string | null | — | For |
Prune Images — images.prune
| Type | Required | Description |
|---|---|---|---|
| array<ID> | ✓ | The image source IDs whose eligible images should be pruned. |
Container steps
Create Container — container.create
| Type | Required | Description |
|---|---|---|---|
| string | ✓ | The container's name. |
| string | — | An identifier for the container, derived from the name if not provided. |
|
| ✓ | The environment to deploy into. |
|
| ✓ | The image to build the container from. |
| boolean | ✓ | Whether the container is stateful ( |
|
| ✓ | Full configuration only supported in API(network, runtime, resources, deploy, scale, integrations). Partial list reference same as container create wizard. |
| array< | ✓ | Must select image target before this field is visible in portal. Volume configuration for the container. |
|
| — | Optional deployment (version) to assign the container to. |
Start Container — container.start
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The container to start. |
Stop Container — container.stop
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The container to stop. |
Restart Container — container.restart
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The container to restart. |
Reimage Container — container.reimage
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The container to reimage. |
|
| ✓ | The new image to apply. |
| boolean | ✓ | When |
| boolean | ✓ | When |
Delete Container — container.delete
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The container to delete. |
Deprecate Container — container.deprecate
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The container to deprecate. |
| boolean | — | When |
Trigger Function — container.function.trigger
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The function container to trigger. |
|
| — | Runtime variables passed to the triggered function instance. |
|
| — | A custom token used to identify and manage the claim. |
Environment steps
Create Environment — environment.create
| Type | Required | Description |
|---|---|---|---|
| string | ✓ | The environment's name. |
| string | ✓ | The cluster the environment runs on. |
|
| ✓ | Environment feature configuration (e.g. legacy networking). |
Start Environment — environment.start
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The environment to start. |
Stop Environment — environment.stop
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The environment to stop. |
Delete Environment — environment.delete
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The environment to delete. |
Deployment steps
Start Environment Deployment — environment.deployment.start
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The environment containing the deployment. |
| string | null | — | Target the deployment with this tag. |
| string | null | — | Target the deployment with this exact version. |
Stop Environment Deployment — environment.deployment.stop
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The environment containing the deployment. |
| string | null | — | Target the deployment with this tag. |
| string | null | — | Target the deployment with this exact version. |
Update Environment Tag Version — environment.deployments.tag
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The environment containing the deployments. |
|
| ✓ | The tag to apply (e.g. |
|
| ✓* | Selector — target the deployment with this exact version. |
| string | ✓* | Selector — target the deployment that currently has this tag. |
*deployment is required; provide either version or tag as the selector.
Prune Deployments — environment.deployments.prune
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | Removes any containers in a deployment that has no tag associated with it. |
Deprecate Environment Deployment — environment.deployment.deprecate
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The environment containing the deployment. Deprecated deployments stop receiving new traffic; existing instances keep running until stopped. |
| string | null | — | Target the deployment with this tag. |
| string | null | — | Target the deployment with this exact version. |
Reinstate Environment Deployment — environment.deployment.reinstate
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The environment containing the deployment. Restores a previously deprecated deployment to active status. |
| string | null | — | Target the deployment with this tag. |
| string | null | — | Target the deployment with this exact version. |
Wait for Environment Deployment Healthcheck — environment.deployment.healthy.watch
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The environment to watch. Waits until all health-checked instances that changed state in the last 15 minutes become healthy before continuing. |
| string | null | — | Target the deployment with this tag. |
| string | null | — | Target the deployment with this exact version. |
|
| — | Maximum time to wait for health before failing the step. |
Stack steps
Create Stack Build — stack.build.create
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The stack to build. |
| boolean | — | When checked the stack is built from the latest commit, circumventing the need to define git instructions. |
| enum: | —* | The kind of git reference supplied. |
| string | —* | The git reference value (branch name, commit hash, or tag). |
| map<string,string> | — | Variables substituted into |
*type and value are both required if the git object is provided. †version and description are both required if the about object is provided.
Generate Stack Build — stack.build.generate
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The stack build to generate (resolve into a deployable artifact). |
Deploy Stack Build — stack.build.deploy
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The stack build to deploy. |
|
| ✓ | The environment to deploy into. |
|
| — | Per-container update behavior (reimage / reconfigure handling). |
| — | Options for controlling how scoped variables defined in the stack are deployed | |
| map<string,string> | null | — | Variables substituted into |
|
| — | Optional deployment (version) to assign the deployed containers to. |
Prune Stack — stack.prune
| Type | Required | Description |
|---|---|---|---|
|
| ✓ | The stack whose old builds should be pruned. |
Webhook steps
Webhook POST — webhook.post
| Type | Required | Description |
|---|---|---|---|
| string | ✓ | The endpoint to POST to. |
| map<string,string> | null | — | Optional headers to send with the request. |
| string | null | — | Custom POST body. Mutually exclusive with |
| string | null | — | Use a previous step's output as the body, format |
|
| — | Retry/failure behavior (see below). |
If neither
bodynorfromis set, the webhook posts the full body of the resource referenced by the step.
Webhook GET — webhook.get
| Type | Required | Description |
|---|---|---|---|
| string | ✓ | The endpoint to GET. |
| map<string,string> | null | — | Optional headers to send with the request. |
|
| — | Retry/failure behavior (see below). |
WebhookStepOptions (shared by both webhook steps):
Field | Type | Required | Description |
|---|---|---|---|
| integer | null | — | Maximum number of attempts before giving up. |
|
| — | Wait time between retries. |
| boolean | ✓ (if | If |
| array<integer> | null | — | HTTP response codes that trigger a failure. |
| boolean | ✓ (if | If |
| array<integer> | null | — | HTTP response codes that trigger a retry. |
Control steps
Sleep — sleep
| Type | Required | Description |
|---|---|---|---|
|
| — | How long to pause before moving to the next step. |