tooling

September 14, 2026 ยท View on GitHub

Shared build and release inputs for the krabka-io repositories.

Krabka was one monorepo. It is now about a dozen repositories. Three kinds of file could not follow a single component out, because every component needs them: the release tooling, the container base-image recipes, and the Helm chart signing key. They live here.

This repository holds no Rust. There is no Cargo.toml, no Bazel workspace and no toolchain file. Nothing here is built.

Directories

DirectoryWhat is in itWho uses it
release/Publish gate, version bumper, crates.io bootstrap, and the release-plz templatesEvery krabka-io Rust repository
packaging/The Creusot verifier toolchain recipe and a local-binary Dockerfilekrabka-broker, local runs
scripts/Repository-agnostic check scriptsNamed per script below
charts/The Helm chart signing public keykrabka-operator, krabka-rebalancer, krabka-schema-registry

Scripts

Each script acts on the git repository of the working directory, not on the repository that holds the script. Run them from the root of the repository you want to check.

ScriptWhat it doesWho uses it
scripts/html-root-url.shChecks that every crate's html_root_url names the workspace version, and can fix themEvery repository that publishes crates
scripts/audit-runtime-values.shLists the hardcoded constants, timeouts and capacities that a configuration audit reviewskrabka-broker, and any repository running the same audit

scripts/html-root-url.sh also runs from the shared CI workflow. See release/README.md.

How a repository consumes this one

CI fetches the scripts. It does not copy them. Add one job to the caller's ci.yml:

jobs:
  release-checks:
    uses: krabka-io/tooling/.github/workflows/release-checks.yml@main
    with:
      rust-toolchain: "1.97.0"

Configuration is the exception. release-plz reads its two TOML files from the root of the repository it releases and cannot fetch them, so those are copied. release/README.md states the whole contract.

What is not here

  • packaging/base.apko.yaml and its lockfile. krabka-io/krabka-broker owns the runtime base layer.
  • Anything a single component owns. A build script that names one component's crates belongs in that component's repository.

License

Apache-2.0. Derivative work of Apache Kafka; see NOTICE.