Files
zeekayandHanzo Dev 4a185dcf57 marketing.hanzo.ai publishes as a site
The marketing 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 `marketing`, s3://hanzo-sites/hanzo/marketing, 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 marketing.hanzo.ai renders what the pod
renders.

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

37 lines
1.1 KiB
YAML

# Hanzo CI/CD — marketing web UI. .github/workflows/cicd.yml is triggers and an
# import of hanzoai/ci; everything else is here.
test:
# Frozen, so the check resolves the 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: marketing
context: .
dockerfile: Dockerfile
repo: ghcr.io/hanzoai/marketing
# No platforms line: ghcr.io/hanzoai/spa is multi-arch, so both build.
# No build secrets: the bearer is minted by hanzo.id at sign-in.
# marketing.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/marketing, where the edge serves it with no pod. The image
# lane above goes when the marketing Deployment does.
site:
slug: marketing
dir: dist
on: [main]