Configuration

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.

Environment

The environment section defines a list of environment variables to set for the run.

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 available.

Example

environment:
  - BUILD=development
  - SECRET_TOKEN

Stacking

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.

Examples

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

environment:
  - FOO=bar
tasks:
  env1:
    type: podman/run
    image: docker.io/alpine:edge
    environment:
      - FOO=baz
  env2:
    type: podman/run
    image: docker.io/alpine:Edge
plans:
  default:
    stages:
      - tasks:
          - env1
          - env2

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 a value of qux.

environment:
  - FOO=bar
tasks:
  env1:
    type: podman/run
    image: docker.io/alpine:edge
    environment:
      - FOO=baz
  env2:
    type: podman/run
    image: docker.io/alpine:Edge
plans:
  default:
    stages:
      - environment:
        - FOO=qux
        tasks:
          - env1
          - env2

Plans

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.

Example

plans:
  plan1:
    ...
  plan2:
    ...

Plan

Plans themselves are pretty straight forward. They group stages with an optional environment.

Attributes

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 or a meta-plan that contains this plan.
stages Yes A list of stages to be run as part of this plan in the order that they should be run in.

Stages

Stages group tasks together into a logical unit. They can be run sequentially or concurrently.

Attributes

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 index 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 its name as a single value (not as a list).

Meta Plans

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.

Attributes

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.
plans Yes A list of plans to run in the order they should be run in.

Example

meta-plans:
  world:
    environment:
      - BUILD_TYPE=production
    plans:
      - plan1
      - plan2
      - plan3

Tasks

The documentation for the available task types can be found below: