Stages & Jobs
Stages
Stages are the top-level building blocks of a pipeline. They define what runs and when.
Adding a stage
In the Pipeline view, click on the canvas and select Add Stage. Give it a clear name that reflects what it does: Build, Test, Deploy, Notify.
Stage execution order
By default, all stages in a pipeline run independently. To make one stage wait for another, connect them with an edge:
- Hover over the source stage until the connection handle appears
- Drag to the target stage
The target stage will not start until the source stage has completed successfully.
You can chain as many stages as you need:
You can also fan out (run multiple stages in parallel after one completes):
And fan back in (wait for multiple stages before proceeding):
Deleting a stage
Select the stage card and press Delete, or right-click and choose Delete Stage.
WARNING
Deleting a stage removes all jobs and steps inside it. This cannot be undone without using Undo (Ctrl+Z).
Jobs
Jobs are the workhorses of a pipeline. Each job runs on a specific runner and contains a sequence of steps.
Adding a job
Enter a stage (double-click its card), then click Add Job. Configure:
| Field | Description | Example |
|---|---|---|
| Name | Identifier for this job | run-tests |
| Runs on | Runner label | ubuntu-latest, self-hosted, macos-latest |
Job execution within a stage
By default, all jobs inside a stage run in parallel. To make one job wait for another within the same stage, connect them with an edge in the Stage view — same as connecting stages.
Common runner labels
| Label | Platform | Use case |
|---|---|---|
ubuntu-latest | GitHub Actions | Most CI tasks |
ubuntu-22.04 | GitHub Actions | Pinned Ubuntu version |
windows-latest | GitHub Actions | Windows builds |
macos-latest | GitHub Actions | iOS/macOS builds |
self-hosted | All platforms | Your own machines |
TIP
Runner labels are passed through directly to the exported YAML. Use whatever label your CI platform supports.
Job failure behavior
When a job fails:
- Its remaining steps are skipped
- Jobs that depend on it (via edges) are also skipped
- Jobs that do not depend on it continue normally
- The overall stage is marked as failed
- Downstream stages that depend on this stage are skipped
