Steps

Updated 2 years ago by Admin

Pipeline steps are defined as a series of shell commands. The commands are executed inside the root directory of your git repository. The root of your git repository, also called the workspace, is shared by all steps in your pipeline.

Example configuration:

1  kind: pipeline
2 type: digitalocean
3 name: default
4
5 steps:
6 - name: backend
7 commands:
8 - go build
9 - go test
10
11 - name: frontend
12 commands:
13 - npm install
14 - npm test

Commands

The commands are executed inside the root directory of your git repository. The root of your git repository, also called the workspace, is shared by all steps in your pipeline. This allows file artifacts to persist between steps.

5  steps:
6 - name: backend
8 commands:
8 - go build
9 - go test

The above commands are converted to a simple shell script. The commands in the above example are roughly converted to the below script:

1  #!/bin/sh
2 set -e
3 set -x
4
5 go build
6 go test

The exit code is used to determine whether the step is passing or failing. If a command returns a non-zero exit code, the step is marked as failing. The overall pipeline status is also marked as failing, and remaining pipeline steps are skipped (unless explicitly configured to run on failure).


Environment

The environment section provides the ability to define environment variables scoped to individual pipeline steps.

5  steps:
6 - name: backend
7 environment:
8 GOOS: linux
9 GOARCH: amd64
10 commands:
11 - go build
12 - go test

Conditions

The when section provides the ability to conditionally limit the execution of steps at runtime. The below example limits step execution by branch, however, you can limit execution by event, reference, status and more.

5  steps:
6 - name: backend
7 commands:
8 - go build
9 - go test
10 when:
11 branch:
12 - master

Use the status condition to override the default runtime behavior and execute steps even when the pipeline status is failure:

5  steps:
6 - name: cleanup
7 commands:
8 - docker system prune -f
9 when:
10 status:
11 - failure
12 - success

See the Conditions article for additional details:


Failure

The failure attribute lets you customize how the system handles failure of an individual step. This can be useful if you want to allow a step to fail without failing the overall pipeline.

5  steps:
6 - name: backend
7 failure: ignore
8 commands:
9 - go build
10 - go test


How did we do?