Skip to main content

bou

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

Installation

Install bou with pip:

$ pip install bou

Running bou

To run bou, simply run the command. The build file will be automatically detected.

$ 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. Stages take priority over steps, so if you have a stage and a step with the same name, the stage will be run.

$ bou build
$ bou test

Task Configuration

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

Environment Variables

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

Stages and Steps

If no steps or stages are specified, by default bou will attempt to run the following, in order:

  1. All of the stages in the stages section of the task configuration

  2. If no stages are specified in the task config, all of the stages discovered in the steps

  3. If no stages are found, all of the steps

Source Code

The source code to bou is available on my personal Git server: https://git.snyman.info/raoul/bou

Copyright (c) 2021 Raoul Snyman

Metadata

Release files for bou 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bou 0.0.3
File Size Uploaded
bou-0.0.3.tar.gz 5.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bou 0.0.3
File Interpreter ABI Platform
bou-0.0.3-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 10.4 kB

Release files / bou-0.0.3.tar.gz

Download URL bou-0.0.3.tar.gz
Size 5.2 kB
Tags Source
SHA-256 checksum
How to use checksums
8de6a0e9edf4581dfb09fdedd3605570a22e6a835037cf5f0d735254f37bb75b
BLAKE2b-256 checksum
How to use checksums
1489682ba6a4a8ced8d8428a40d6858e7309ac9330f4cc30374f1b5568a605d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.4.2 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.2

Release files / bou-0.0.3-py2.py3-none-any.whl

Download URL bou-0.0.3-py2.py3-none-any.whl
Size 5.1 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
d842721e0b167f09935f97a394924659d92fc3fba6f5678ae2c1567e745a1f6a
BLAKE2b-256 checksum
How to use checksums
fa9cb9589a323b0876a2479ab7fb949bbd3fdbcd9758e94c779a1e4b4db35b76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.4.2 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.2

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page