Files
world/hanzo.yml
zeekay 5117dacaf4 release: world 2.4.14 — Satellite/Terrain via KMS Mapbox token
Root cause of the dark Sat/Terrain: no VITE_MAPBOX_TOKEN was baked at build, so
the token-gated Mapbox satellite-streets-v12 / outdoors-v12 styles silently fell
back to the keyless CartoDB dark basemap in both 2D and 3D. The publishable pk
token now lives in KMS (hanzo/deploy/VITE_MAPBOX_TOKEN, env=prod) and is sourced
by hanzoai/ci (v1.0.5) as a build_secret --build-arg into the Vite SPA.

Rides the pending main fixes (analyst reasoning recovery, AI Compute rate,
map-control dropdowns).
2026-07-18 12:33:11 -07:00

41 lines
1.6 KiB
YAML

# Canonical CI/CD config for hanzoai/world — read by both the hanzoai/ci
# reusable workflow (.github/workflows/cicd.yml) and platform.hanzo.ai.
# One image (the Vite SPA served by hanzoai/static), and a main-branch rollout
# onto the existing `world` operator Service CR
# (universe: infra/k8s/operator/crs/world.yaml).
#
# No separate `test:` block: the Dockerfile IS the gate — `npm ci && npm run
# build` fails the image on any type error or build break, so nothing broken
# ships (same pattern as hanzoai/finance + hanzoai/console).
images:
- name: world
context: .
dockerfile: Dockerfile
repo: ghcr.io/hanzoai/world
# Publishable Mapbox token (pk, URL-restricted to world.hanzo.ai) baked into
# the Vite SPA at build so the Satellite/Terrain basemaps load (Dark stays
# keyless CartoDB). Sourced from KMS (hanzo/deploy/VITE_MAPBOX_TOKEN,
# env=prod) by hanzoai/ci — the key name IS the build-arg. Never in git.
build_secrets:
- VITE_MAPBOX_TOKEN
# Deploy: roll the freshly-built image onto the `world` Service CR. Fires only
# on `main` (+ tags); PRs and forks build but never deploy. KMS hands back the
# kubeconfig at run time.
deploy:
cluster: do-sfo3-hanzo-k8s
namespace: hanzo
# Quoted to dodge YAML 1.1 boolean coercion of a bare `on:` key.
"on": [main]
services:
- name: world
image: world
# KMS (kms.hanzo.ai, Universal Auth) supplies the GHCR push token and the
# target kubeconfig at run time. Only KMS_CLIENT_ID/KMS_CLIENT_SECRET live in
# GitHub; everything else is fetched here.
kms:
path: /deploy
environment: prod