hanzo.ai/ci
A Go module. This address is where its documentation lives; the source is on GitHub.
go get hanzo.ai/ci- Reference
- pkg.go.dev/hanzo.ai/ci
Hanzo CI
One pipeline builds, tests and publishes every Hanzo repo. A repo says what it makes; the pipeline makes it the same way everywhere.
hanzo.yml
One file at the root of a repo names its images, the tests that gate them, and the static site it publishes, if it has one. The repo carries no build logic of its own.
images:
- { name: api, context: ., repo: ghcr.io/acme/api }
test:
- { name: unit, run: go test ./... }The shared workflow
A short workflow imports the pipeline from hanzoai/ci, so every repo runs the same steps from one definition. Tests run first, and a commit that fails them publishes nothing.
jobs:
cicd:
uses: hanzoai/ci/.github/workflows/build.yml@v2
secrets: inheritRunners
Jobs run on Hanzo's runner fleet. To run them on your own machines, pass your runners' labels as runner.
The build door
With mode: delegate, a job hands each image to the build door, POST /v1/build on api.hanzo.ai. It builds every declared architecture on a native node and pushes one multi-architecture image, only into registries your organization owns. It reads the organization from the job's Hanzo identity, so it needs no secret of its own.
A build ends at a published image. What runs where is declared separately, and applied from that declaration.