Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/dwarves

holger.runa.ron

// holger.runa.ron — the holger CI/CD pipeline, authored in the typed `runa` format.
//
// The `*.runa.ron` port of the in-code `dwarves::holger_build::pipeline`
// (crates/dwarves/src/holger_build.rs): it builds holger's products, each one crate and
// one row of holger's one product list (`holger`, `holger-downstream`, `holger-cli`).
// `holger-ui`'s row builds from the sibling holger-ui checkout, so it is no step here;
// the estate's rows (the appliance, the metered builds, the media) have their own verbs.
// `dwarves run holger.runa.ron` loads + validates this file, topo-orders the stage DAG,
// and dispatches every step through the real jera Scheduler.
//
// Each `Build{variant}` names a row holger declares in its `.nornir/build-variants.toml`;
// the forge resolves it against that discovered set and drives
// `nornir-build-thing::build_variant` IN-PROCESS (a real `cargo build`, zero shell). The
// `ReleaseDoctor` step kicks off the dwarves release engine in DRY-RUN.
//
// To execute against a real holger checkout:
//   DWARVES_REPO_ROOT=/path/to/holger dwarves run holger.runa.ron
// (else the repo root defaults to this file's directory).
Pipeline(
    name: "holger-products",
    // Built on a release push to main, and always startable by hand.
    triggers: [
        Push(branch: "main"),
        Manual,
    ],
    stages: [
        // ── build: one Build step per product row (holger's real declared row names).
        //    `"*"` would fan out over the WHOLE discovered set, the estate's media
        //    pointers included; naming the products is explicit + stable.
        Stage(
            name: "build",
            steps: [
                Build(variant: "holger"),
                Build(variant: "holger-downstream"),
                Build(variant: "holger-cli"),
            ],
        ),
        // ── test: gate the built products behind the fast test + lint matrix.
        Stage(
            name: "test",
            needs: ["build"],
            steps: [
                Nextest(all_features: true),
                Lint(tool: Clippy, deny_warnings: true),
            ],
        ),
        // ── package: forge the product executables into holger deploy packages.
        Stage(
            name: "package",
            needs: ["build"],
            steps: [
                HolgerPackage(targets: ["x86_64-unknown-linux-gnu"]),
            ],
        ),
        // ── release: kick off the deps-first crates.io release PLAN (dry-run — the
        //    forge NEVER --execute/publishes from a pipeline step).
        Stage(
            name: "release",
            needs: ["test", "package"],
            steps: [
                ReleaseDoctor,
            ],
        ),
    ],
)