Bou (pronounced "bow") is a simple builder or task runner which uses a YAML file for task configuration.
Bou uses the concept of stages and steps. A stage is a sets of steps, and a step is a set of commands to run. A stage can contain many steps, but a step can only belong to a single stage.
"Bou" is Afrikaans for "build".
Install bou with pip:
$ pip install bou
To run bou, simply call it:
$ bou
To specify a build configuration file, use the -f option:
$ bou -f /path/to/build.yaml
To specify a stage or a step to run, just add it to the command
$ bou build
$ bou test
Note
By default, all stages are run, and stages are run in the order in the build configuration file.
When run without any parameters, bou will search for a file named bou.yaml, bou.yml, build.yaml or build.yml
Here's a basic example:
stages:
- build
- test
steps:
build:
stage: build
script:
- make
test:
stage: test
script:
- make test
Bou also supports setting environment variables, both at a global level, as well as at a step level. As a convenience, bou sets up an initial environment variable named BASE_DIR which is the directory the build file is in.
Environment variables defined at a global level are set first when a step is run, and then the step-level environment variables are set.
stages:
- build
environment:
- PYTHON=python3
steps:
build:
stage: build
environment:
- SOURCE=$BASE_DIR/src
script:
- $PYTHON $SOURCE/setup.py build
The source code to bou is available on my personal Git server: https://git.snyman.info/raoul/bou
Copyright (c) 2021 Raoul Snyman