brokkr.toml
# holger CI/build pipeline — driven by the dwarves forge (brokkr descriptor +
# sindri scheduler). `dwarves validate` / `dwarves plan` / `dwarves run [--real]`.
#
# Every step names a row of holger's ONE product list (`holger-recipe/src/variants.rs`,
# emitted to `.nornir/build-variants.toml`): `run = { variant = … }` builds the row in the
# declared toolchain, `run = { tests = … }` builds AND runs that row's package tests.
# The media rows (container, installer, iso) are built by their own doors
# (`cargo xtask estate-media`, `installer-iso`, `appliance-iso`) and are absent here.
#
# History: this file first held the ORIGINAL tiers (embedded, mini, full, server-local),
# the MVP gateway CLIs and the two agent rows (2026-08-25); HOL-PRODUCTS (2026-10-30)
# retired those rows for the four products, and `git log -- brokkr.toml` has the rest.
[pipeline]
name = "holger-ci"
[[pipeline.trigger]] # fire when the poll sweep sees HEAD move
kind = "poll"
events = ["push"]
[[pipeline.trigger]] # …and nightly at 04:00 (off nornir 03:00, skidbladnir 03:20, gunnar 03:40)
kind = "cron"
cron = "0 4 * * *"
# ── the products: each its `cargo install` line ──────────────────────────────
[[pipeline.stage]]
name = "products"
# `cargo install holger`: the server with its defaults (the twelve formats, the intake
# chain, no outbound client). The stage root.
[[pipeline.stage.step]]
name = "holger"
run = { tests = "holger" }
artifacts = ["target/release/holger"]
# `cargo install holger-downstream`: the same program with the gateway's features. A red
# here with `holger` green names the downstream's features.
[[pipeline.stage.step]]
name = "holger-downstream"
needs = ["holger"]
run = { variant = "holger-downstream" }
artifacts = ["target/release/holger-downstream"]
# `cargo install holger-cli`: the command-line tool with the bundle, verify and agent
# verbs. No server code, so it is its own root.
[[pipeline.stage.step]]
name = "holger-cli"
run = { tests = "holger-cli" }
artifacts = ["target/release/holger-cli"]
# ── the estate's server build ────────────────────────────────────────────────
[[pipeline.stage]]
name = "estate"
# The static appliance payload both packaging cells chain. Green `holger` and red here is
# the appliance's features or the cross toolchain.
[[pipeline.stage.step]]
name = "mvp-server-musl"
needs = ["holger"]
run = { variant = "mvp-server-musl" }
artifacts = ["target/x86_64-unknown-linux-musl/release/holger-mvp"]