Runners are what keeps a pipeline going. The start new builds based on some logic, e.g. when the previous build is finished or (e.g if the first step is a trigger) after the first step is done.


(start-new-run-after-first-step-finished {pipeline-def :pipeline-def, context :context})

Runner that makes sure there is always one pipeline-run with the first step active. Useful if the first step is waiting for a trigger such as a VCS commit and you don’t want to wait for the whole pipeline to complete before starting the next run. Do not use this if your first step finishes immediately as this will lead to lots of active pipelines


(start-one-run-after-another {pipeline-def :pipeline-def, context :context})

Runner that always keeps one pipeline-run active. It waits for a run to complete, then starts a new one. Commonly used when running multiple pipelines in parallel is not an option or the pipeline has no trigger.


(stop-runner ctx)

Triggers an event that will stop runners so they no longer start new pipeline-runs. Does not stop running pipelines and does not wait for runners to stop.



(while-not-stopped ctx & body)

Execute a runners body until it is stopped from the outside (usually by someone calling stop-runner, e.g. on shutdown).