Skip to main content

Variables

Variables can be set at pipeline, stage and step levels.

note

The order of precedence for environment variables with the same name is step > stage > pipeline.

Pipeline

Pipeline environment variables are available to all run steps in your pipeline.

kind: pipeline
spec:
options:
envs:
GOOS: linux
GOARCH: amd64
stages:
- type: ci
spec:
steps:
- name: test 1.20
type: run
spec:
container: golang:1.20
script: |
go build
go test

- name: test 1.21
type: run
spec:
container: golang:1.21
script: |
go build
go test

Stage

Stage environment variables are available to all run steps in the stage.

kind: pipeline
spec:
stages:
- type: ci
spec:
envs:
GOOS: linux
GOARCH: amd64
steps:
- name: test 1.20
type: run
spec:
container: golang:1.20
script: |
go build
go test

- name: test 1.21
type: run
spec:
container: golang:1.21
script: |
go build
go test

Step

Run step environment variables are only available to the step.

kind: pipeline
spec:
stages:
- type: ci
spec:
steps:
- name: test
type: run
spec:
container: golang
envs:
GOOS: linux
GOARCH: amd64
script: |
go build
go test

Background steps also support environment variables.

kind: pipeline
spec:
stages:
- type: ci
spec:
steps:
- name: database
type: background
spec:
container: mariadb
envs:
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
MYSQL_DATABASE: test

- name: test
type: run
spec:
container: mariadb
script: |-
sleep 15
mariadb -u root -h database --execute="SELECT VERSION();"