Files

37 lines
1.6 KiB
YAML

# Canonical CI/CD config for hanzoai/attendant — read by the hanzoai/ci reusable
# (.hanzo/workflows/cicd.yml) and by platform.hanzo.ai.
#
# No deploy: here. cd.hanzo.ai rolls the fleet from a pinned tag in
# hanzo/universe (charts/app/values/hanzo/attendant.yaml), so a build publishes
# an image and nothing moves until that pin does.
# The floor for the series. imgver takes max(this, what is already published)
# and adds a patch, so this is only ever read at the start — with nothing on the
# registry yet it publishes exactly this, and every push after it takes the next
# patch from the registry. Bump it here to jump the series, never to name a
# build.
version: 0.1.0
images:
- name: attendant
context: .
dockerfile: Dockerfile
repo: ghcr.io/hanzoai/attendant
# The suite under -race, because everything here is concurrent by nature: audio
# arrives on one goroutine per speaker, the floor changes hands on another, and
# the answer is formed on a third.
#
# ./mutate.sh is the other half of this gate and it is deliberately NOT run
# here. It breaks each fix IN PLACE and restores it, and this runner builds the
# image from the same working tree — a run killed between those two steps (a
# runner takes SIGTERM on every rolling update, which is why it is given half an
# hour to finish) would leave the mutation in the tree for the build step to
# compile and publish. It is run before pushing instead, where the only thing it
# can damage is a checkout.
test:
- name: go-vet
run: go vet ./...
- name: go-test
run: go test -race -count=1 ./...