mirror of
https://github.com/hanzo-apps/tabs.git
synced 2026-10-30 15:04:29 +00:00
Both workflows live in .hanzo/workflows, which git.hanzo.ai runs. Release installs with pnpm, typechecks, tests, exports, checks the sheet is in the export, and publishes `out/` through hanzoai/ci's site action as project `tabs`, the prefix the tabs.hanzo.ai route serves. The deploy key comes from KMS; no bucket credential is held. hanzo.yml's gates install with pnpm, since `catalog:` specs only resolve there, and package-lock.json goes with npm. Co-authored-by: Hanzo Dev <[email protected]>
42 lines
2.1 KiB
YAML
42 lines
2.1 KiB
YAML
# Canonical CI/CD config for hanzoai/tabs — the one file both the hanzoai/ci
|
|
# reusable (.hanzo/workflows/cicd.yml) and platform.hanzo.ai read.
|
|
#
|
|
# Tabs IS deployed from this repo — `.hanzo/workflows/release.yml` publishes the
|
|
# static export to the Sites plane (project `tabs`) on every push to main, and
|
|
# that is what tabs.hanzo.ai serves. There is no `images:` and no `deploy:` here
|
|
# because neither describes that: the ingress serves the export straight from
|
|
# s3://hanzo-sites/hanzo/tabs, so this repo builds no image and rolls out no
|
|
# workload. Read the absence as "nothing to build", not as "nothing ships".
|
|
#
|
|
# The gate is typecheck, the jest suite, and the surface guard. Jest is
|
|
# deliberately narrow and says so in its own config — "pure logic only: the
|
|
# layout tree and the shell bindings; everything that needs a browser is
|
|
# verified against a real one" — so panes/tiles assert the split arithmetic that
|
|
# browser tests would only observe indirectly.
|
|
#
|
|
# The surface guard is the other half of that sentence, and until it existed
|
|
# nothing kept it. It builds the export and walks every screen a stranger can
|
|
# reach at 390, 768 and 1440, asserting four things a reader is owed: the page
|
|
# does not scroll sideways, every control is at least 44px tall, every colour
|
|
# pair clears AA against the background it actually sits on, and no run of prose
|
|
# is under 12px. Four defects were live when it was written and it reports all of
|
|
# them; the readings are soft so one does not hide the next.
|
|
#
|
|
# What it does NOT check: line breaking. A widowed last line is a measure
|
|
# decision, and a rule general enough to catch one would flag prose that is fine.
|
|
test:
|
|
- name: build
|
|
run: |
|
|
set -e
|
|
pnpm install --frozen-lockfile
|
|
pnpm typecheck
|
|
pnpm test
|
|
- name: surface
|
|
run: |
|
|
set -e
|
|
# The runner image bakes browsers under /opt/playwright as root, so the
|
|
# job's own copy goes where the job may write.
|
|
export PLAYWRIGHT_BROWSERS_PATH="$PWD/.cache/ms-playwright"
|
|
pnpm exec playwright install chromium
|
|
pnpm test:surface
|