Pipelines

Pipelines

The main concept in Brespi is that of a pipeline: a sequence of steps that produce, transform and consume files (or folders) called artifacts to perform backup or restore operations.

pipelines overview

Editor

Pipelines are built from (connected) steps via the editor.

Each step has a specific role; they're categorized as producers (create artifacts), transformers (modify artifacts) or consumers (write artifacts to a final destination).

steps catalog

When adding a new step to a pipeline, you can click any of the field labels for more information. You can use ${PROPERTY} syntax in any step field to resolve certain values (like connection URLs or encryption keys) at the time of execution.

s3 upload form

Added steps appear as blocks with input and output ports, which can be connected by arrows (click and drag) that define the flow of artifacts from one step to the next. This makes it possible to chain multiple steps together into a pipeline.

step connecting by drawing an arrow

It's good to note that pipelines aren't necessarily limited to single linear chains. A step can have its output flow to multiple downstream paths in parallel. But keep in mind that every pipeline can only have a single starting step.

pipeline with branching steps

Custom scripts

One specific step worth calling out is the Custom Script. For any operations that aren't covered by the built-in steps, this one can fill the gap by executing an arbitrary bash script.

custom script form

When passthrough is active, any artifacts automatically flow from the step's input to its output without modification, which is useful for side-effect scripts like logging.

When passthrough is not active, the script is fully in control and receives 2 environment variables:

  • an input directory path, containing the input artifacts (if any) flowing into this step
  • an output directory path, where the script is responsible for writing its output artifacts (if any)