An Artifact is the outcome of a pipeline which is to be stored away or consumed in another pipeline.

In Bob, an artifact can be produced at any Step in a pipeline. In Bob, like Concourse CI, its important that artifacts should not be stored within the system as Artifacts should be there regardless of Bob being there or not. This is something that is not there in most of the other on-prem CIs.

To denote that a step produces an artifact:

  "cmd": "mvn build",
  "produces_artifact": {
    "name": "app-jar",
    "path": "target/app.jar",
    "store": "s3"

When Bob encounters such a step, it executes the step and if its successful, uploads the artifact from the provided path to an Artifact Store denoted by the store key.

Artifact Store

An Artifact Store is Bob’s way of abstracting the kind of storage needed to store artifacts. This is akin to an abstract object store where Bob can store and retrieve artifacts.

An artifact store is any system which has the following properties:

A reference artifact store which implements storage using local file system can be found

This gives the following advantages:

An artifact store must be registered with Bob prior to the execution of a Step that produces an artifact.

To register an Artifact store with Bob:

Conversely a DELETE request on /artifact-stores/<name> un-registers it from Bob.

To list the registered store make a GET request on /artifact-stores.

To retrieve an artifact from a pipeline run: