Files
zeekayandHanzo Dev 034de6795e The operator image publishes both architectures
It was pinned to amd64 because DigitalOcean was amd64 and the arm64 runner pool
was offline. Neither holds: the clusters it runs on have an arm64 node, and the
build door builds each architecture natively on a node of that architecture. So
the pin goes and the default applies. The crate has nothing architecture-bound;
its 362 tests pass on aarch64.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-19 10:40:09 -07:00

39 lines
1.9 KiB
YAML

# Canonical CI config for hanzoai/operator — read by the hanzoai/ci reusable
# (.hanzo/workflows/cicd.yml) and by platform.hanzo.ai.
#
# ONE way to build, in one place: hanzo.yml declares WHAT, hanzoai/ci owns HOW.
#
# The lane has to live somewhere it is observed. A build lane that fails to
# START reports exactly like no push happening — no image, no error anyone
# reads — so merged fixes sit on main while the branch looks healthy.
images:
- name: operator
# ghcr for the OSS artifact other orgs pull; the fleet registry is where the
# deploy lane reads from. Both are the same build — hanzoai/ci pushes here
# and server-side-copies the same tags to our registry, so this stays ghcr.
#
# The key is `repo:`, not `image:`. The reusable reads `.repo` off each
# images[] entry — the enqueue fan-out, the buildx tag list and the deploy
# resolver all select it, with no fallback — so an entry keyed `image:`
# resolves to a null repo and tags `null:sha-<short>-amd64`. `image:` IS a
# real key, but it belongs to `deploy.services[]`, where it names a LOCAL
# images[] entry rather than a registry ref. Same word, different object.
repo: ghcr.io/hanzoai/operator
dockerfile: Dockerfile
context: .
test:
# cargo test is the gate, and the whole lib — no filter. A filter is how a
# gate quietly stops testing: `cargo test --lib <name>` with a stale name
# prints "running 0 tests" and exits 0, which is why build.yml separately
# refuses a gate that reported success without running one.
#
- name: cargo test
run: cargo test --lib
# NO deploy: lane. The operator is deployed like everything else — universe
# records the desired tag and CD reconciles it. A deploy step here would be a
# second mover for an object that already has one, and two writers for one
# object is the failure this split exists to prevent.