Configuring convey is done via a file named
`convey.yml`. This file defines
the tasks as well as the plans. This document explains how that file is
structured and what options are available.
There are a handful of examples in the [
examples/](
examples/) directory with a
README.md that describes which each is showing.
The complete reference for convey.yml can be found below.
The environment section defines a list of environment variables to set for the
It should be specified in a
`NAME` or
`NAME=VALUE` format. If no value is
provided, the value of the variable from the host will be provided if it is
Since there are multiple places where environment variables can be set, they
must all be merged together before being passed to a task.
Environment variables can be set at the
`config-file`,
`plan`,
`stage`,
`task`,
and command line levels. They are merged in that order, with the last one
taking precedence over the previous.
In the following example, when the
`env1` task is run, the
`FOO` environment
variable will be set to
`baz`, but when the
`env2` task is run, the
`FOO`environment variable will be set to bar
image: docker.io/alpine:edge
image: docker.io/alpine:Edge
In the next example, the stage is overriding the config-file value. So
`env1`still has a value of
`baz` for the environment variable
`FOO`, while
`env2` has
image: docker.io/alpine:edge
image: docker.io/alpine:Edge
The plans sections defines your execution plans which tie everything together
by organizing
`tasks` into
`stages` into the order that they will be executed.
Each plan is defined by a name in the plans section.
Plans themselves are pretty straight forward. They group
`stages` with an
| Name | Required | Description |
| ----------- | -------- | ----------- |
| environment | | A list of environment variables to set. They should be specified in a
`NAME` or
`NAME=VALUE` format. If no value is provided, the value of the variable from the host will be provided if it is available. These environment variables will be applied on top of any that were set at the config-file level. |
| stages | Yes | A list of
`stages` to be run as part of this
`plan` in the order that they should be run in. |
Stages group
`tasks` together into a logical unit. They can be run
sequentially or concurrently.
| Name | Required | Default | Description |
| ----------- | -------- | ------- | ----------- |
| enabled | | true | Whether or not to run the stage at all. |
| concurrent | | false | Whether or not the tasks should be run at the same time. |
| environment | | | A list of environment variables to set. The should be specified in a
`NAME` or
`NAME=VALUE` format. If no value is provided, the value of the variable from the host will be provided if it is available. These environment variables will be applied on top of any that were set at the top-level and the plan level. |
| name | | the idex of the stage | A name to give the stage.
| run | No | on-success | When a stage should be run. Possible values are
`on-success`,
`on-failure`, or
`always`. |
| tasks | Yes | | A list of task names to be run as part during this stage. If running sequentially they are run in the order that they are provided. If you are just specifying a single task, you can just pass use it's name not in a list. |
Meta plans are used to group plans together and run them in serial. This is
also possible via the command line by specifying multiple plans to run.
Meta plans contain a single attribute which is the list of
`plans` to run.
| Name | Required | Description |
| ----------- | -------- | ----------- |
| plans | Yes | A list of
`plans` to run in the order they should be run in. |
The documentation for the available task types can be found below:
* [
Convey](
tasks/README.md)
* [
Docker](
docker/README.md) (deprecated)
* [
Podman](
podman/README.md)
* [
Script](
script/README.md)