A CDS workflow file only contains the description of pipelines orchestration, hooks, run conditions, etc. Consider the following Pipeline which implements a basic two-stage continuous delivery pipeline:
version: v1.0
name: build
parameters:
param_name:
type: string
default: default_value
stages:
- Compile
- Package
jobs:
- job: Build UI
stage: Compile
steps:
- gitClone:
branch: '{{.git.branch}}'
commit: '{{.git.hash}}'
directory: cds
url: '{{.git.url}}'
- script:
- echo {{.cds.pip.param_name}}
- cd cds/ui
- npm set registry https://registry.npmjs.org
- npm install
- ng build -prod --aot
- tar cfz ui.tar.gz dist
- artifactUpload:
path: cds/ui/ui.tar.gz
tag: '{{.cds.version}}'
requirements:
- binary: git
- memory: "1024"
- model: Node8.9.1
- job: Test UI
stage: Compile
enabled: false
requirements:
- binary: git
- memory: "1024"
- model: Node8.9.1
steps:
- gitClone:
branch: '{{.cdsbuildgitbranch}}'
commit: '{{.git.hash}}'
directory: cds
password: ""
privateKey: ""
url: '{{.cds.app.repo}}'
user: ""
- script:
- export CHROME_BIN=chromium
- npm set registry https://registry.npmjs.org
- cd cds/ui
- npm install
- npm test
- jUnitReport: ./cds/ui/tests/**/results.xml
- job: Package UI
stage: Package
requirements:
- binary: docker
steps:
- artifactDownload:
path: .
- CDS_DockerPackage:
dockerfileDirectory: .
imageName: ovh/cds-ui
imageTag: '{{.cds.version}}'
This file describes three jobs (Build UI, Test UI and Package UI) in two stages Compile and Package. The two first jobs will be run in parallel in the first stage. When the first Stage is successful, the second stage containing the last job will be run.
A pipeline always begins with:
version: v1.0
name: build
stages:
- Compile
- Package
where:
version: v1.0 represents the version of the syntax used in this filename: build is the name of the pipelinestages is the ordered list of the stagesEach job has several properties:
job: Build UI defines the name as Build UI.Each job is composed of steps. A step is an action performed by a CDS Worker within a workspace. Each step uses an action and the syntax is:
- job: xxx
steps:
- myAction: myParameter
- job: xxx
steps:
- myAction:
myFistParameter: value
mySecondParameter: value
Read more about available actions.
It is possible to make a step optional. Even if this task fail the job will continue.
- job: xxx
steps:
- myAction:
myFistParameter: value
mySecondParameter: value
optional: true
This also work for built-in action
- job: xxx
steps:
- coverage:
format: other
path: "{{.cds.workspace}}/target/site/jacoco/jacoco.xml"
optional: true