Examples
This section contains a number of examples.
Traditional Build
This example shows your traditional clone, test, build, deploy, and report for a project.
tasks:
clone-source:
type: podman/run
image: docker.io/rwgrim/docker-noop
run-linter:
type: podman/run
image: docker.io/rwgrim/docker-noop
run-tests:
type: podman/run
image: docker.io/rwgrim/docker-noop
build:
type: podman/run
image: docker.io/rwgrim/docker-noop
deploy-dev:
type: podman/run
image: docker.io/rwgrim/docker-noop
deploy-docs:
type: podman/run
image: docker.io/rwgrim/docker-noop
report-build-status:
type: podman/run
image: docker.io/rwgrim/docker-noop
plans:
default:
stages:
- name: prepare
tasks:
- clone-source
- name: testing
tasks:
- run-linter
- run-tests
- name: build
tasks:
- build
- name: deploy
tasks:
- deploy-dev
- deploy-docs
concurrent: true
- name: report
tasks:
- report-build-status
run: always
Metaplans
You can use metaplans to group separate plans into a single plan.
default-plan: everything
tasks:
one:
type: podman/run
image: docker.io/alpine:edge
command: echo one
two:
type: podman/run
image: docker.io/alpine:edge
command: echo two
plans:
plan1:
stages:
- tasks:
- one
plan2:
stages:
- tasks:
- two
meta-plans:
default:
plans:
- plan1
- plan2
Login/Logout
This example logs into the registry at the start of the plan and regardless
of the result of the plan will always logout before exiting. It also will look
for the REGISTRY_USERNAME
and REGISTRY_PASSWORD
on the host to keep them
out of convey.yml
.
environment:
- REGISTRY_HOSTNAME=registry.example.com
- REGISTRY_USERNAME
- REGISTRY_PASSWORD
tasks:
login:
type: registry/login
server: ${REGISTRY_HOSTNAME}
username: ${REGISTRY_USERNAME}
password: ${REGISTRY_PASSWORD}
logout:
type: registry/logout
server: ${REGISTRY_HOSTNAME}
plans:
default:
stages:
- tasks:
- login
- tasks:
- logout
run: always