Files
zeekayandHanzo Dev a41b55db41 ads.hanzo.ai publishes as a site
The ads Deployment is a SPA server over this repo's dist and nothing else:
no SPA_* config, no API of its own (that is api.hanzo.ai). So the export is
published to the Sites plane as `ads`, s3://hanzo-sites/hanzo/ads, for the
edge to serve with no pod. The build gate already produces dist in the same
job, so the lane names no build of its own.

Checked in headless Chromium: the export on ads.hanzo.ai renders what the pod
renders.

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

38 lines
1.1 KiB
YAML

# Hanzo CI/CD — ads. .github/workflows/cicd.yml is triggers and an import of
# hanzoai/ci; everything it runs is here.
test:
# Frozen: the gate resolves the same tree the Dockerfile does.
- name: install
run: |
set -e
corepack enable
pnpm install --frozen-lockfile
# The image's build line, run first. A vite build that emits nothing still
# exits 0, hence the file tests.
- name: build
run: |
set -e
pnpm build
test -s dist/index.html
test -d dist/assets
images:
- name: ads
context: .
dockerfile: Dockerfile
repo: ghcr.io/hanzoai/ads
platforms: [linux/amd64]
# No build secrets. A person's credential comes from hanzo.id at sign-in;
# an ad network's token stays in KMS and is read server-side at launch.
# ads.hanzo.ai is bytes: the export is the whole product and its API is
# api.hanzo.ai. The site lane publishes the `build` gate's dist to
# s3://hanzo-sites/hanzo/ads, where the edge serves it with no pod. The image
# lane above goes when the ads Deployment does.
site:
slug: ads
dir: dist
on: [main]