Skip to main content

Multiline

tip

We recommend reviewing Go Templates documentation before attempting to create a template.

If you're new to YAML we also recommend reviewing the YAML 1.2 spec for validation on syntax.

Overview

From YAML Spec Scalars:

  • | - In Scalar literals, newlines are preserved
# Below YAML was taken from spec literal example
--- |
\//||\/||
// || ||__
tip

For information on more types of scalars read the spec information

Sample

Let's take a look at using a conditional with a variable in a template:

metadata:
template: true

steps:

{{ .test }}

- name: build
commands:
- go build
environment:
CGO_ENABLED: '0'
GOOS: linux
image: golang:latest
pull: always
ruleset:
event: [ push, pull_request ]

The caller of this template could look like:

version: "1"
templates:
- name: sample
source: github.com/<org>/<repo>/path/to/file/<template>.yml
type: github

steps:
- name: golang
template:
name: sample
vars:
test: |
- name: test
commands:
- go test ./...
image: golang:latest
pull: always
ruleset:
event: [ push, pull_request ]

Which means the compiled pipeline for execution on a worker is:

version: "1"
steps:
- name: sample_test
commands:
- go test ./...
image: golang:latest
pull: always
ruleset:
event: [ push, pull_request ]

- name: sample_build
commands:
- go build
image: golang:latest
pull: always
ruleset:
event: [ push, pull_request ]