Skip to content

Pipelines and runs

A pipeline is a definition. It is usually a file in a repository (.slipway/*.yaml, one pipeline per file, or slipway.yaml at the root), and can also be stored inline in Slipway. It has a name unique within the project, an enabled flag and a schema version. The language is documented in Pipelines.

A trigger is a normalised event that may start a run. Kinds: push, pull_request, tag, schedule, manual, api, pipeline (fan-in from another pipeline), release and webhook. GitLab merge requests and Bitbucket pull requests map to the same pull_request event. See Triggers.

A run is one execution of a pipeline. It records the trigger, a git snapshot (sha, ref, message, author), inputs, a compiled plan, timing, and a per-pipeline monotonic number.

Run statuses: queued, running, succeeded, failed, cancelled, skipped, errored.

The compiled plan is the post-matrix DAG of jobs. Compilation happens when the run is created, so a run is reproducible from what it recorded, even if the pipeline file changes later.

A job is a node in the DAG. It runs on one runner, picked by runs_on labels. Job statuses: pending, waiting_approval, queued, assigned, running, succeeded, failed, cancelled, skipped, timed_out, runner_lost.

A step is one unit of work in a job: a shell script (run), a reusable step (uses) or a template (template). Steps have an outcome, an exit code, timing and a log reference.

When the scheduler assigns a job it creates a lease with an expiry, renewed by the runner’s heartbeat. If a runner vanishes, the lease expires, the job becomes runner_lost and, if you configured retry.when: [runner_lost], is requeued.

  • Logs stream from the runner to the server, to NATS JetStream for live tail, and to S3 for durability. Chunks are NDJSON, ordered by sequence number.
  • Artifacts are files uploaded by a job, addressed by name with a SHA-256 and a retention date.
  • Caches are keyed, with restore keys, and scoped by branch or project.
  • Test reports (JUnit and others) and annotations are parsed into the run view.

You can re-run all jobs, only failed jobs, or from a step, and cancel a queued or running run. Re-runs create a new attempt that keeps the original inputs. From the CLI: slipway run rerun <run> --failed, slipway run cancel <run>.