Files
esign/hanzo.yml
T
zooqueenandHanzo Dev e0ea095e6d Build and publish the image from GitHub through hanzoai/ci
.github/workflows/cicd.yml is the canonical caller of hanzoai/ci
build.yml@v2, which runs on the linux-amd64 JIT runners. hanzo.yml keeps
its build gate and now declares the image, so a push to main publishes
ghcr.io/hanzoai/sign as sha-<short7>-amd64 plus a semver from bin/imgver.
`version: 0.2.0` sets the series above the 0.1.x tags already published,
because package.json carries the upstream 2.7.1.

The two .hanzo/workflows build callers go: the forge copy is a mirror
with Actions off, and either one would publish the same commit a second
time if it ran.

Co-authored-by: Hanzo Dev <[email protected]>
2026-10-16 01:57:32 -07:00

45 lines
1.9 KiB
YAML

# Hanzo eSign — a turborepo whose deployable artifact is the remix app.
#
# GitHub runs .github/workflows/cicd.yml (hanzoai/ci build.yml@v2) against this
# file on every push to main, tag v* and pull request. `test:` gates; `images:`
# builds docker/Dockerfile and publishes ghcr.io/hanzoai/sign as
# sha-<short7>-amd64 plus the semver the pin in hanzoai/universe
# (charts/app/values/hanzo/sign.yaml) names.
#
# The gate is the real build of the app the cluster runs: npm ci against the
# committed lockfile (postinstall generates the Prisma client), then turbo's
# build of @hanzo/esign-remix, which type-checks every workspace package it
# depends on. A type error anywhere under packages/ fails here.
#
# `lint:paths` runs before install: it needs no dependencies and fails the gate
# the moment a first-party /api path is served or called (every route is /v1).
#
# `lint:tx` runs next because it takes seconds and answers a question the build
# cannot: whether anything inside a `$transaction` reaches the global Prisma
# client. Base SQLite serves one write connection, so such a call waits on a
# lock the transaction holds and the transaction dies (`P2028`) — at runtime,
# with a green build. See packages/eslint-config/transaction.cjs.
# The image series. bin/imgver publishes max(this, the highest semver already on
# ghcr.io/hanzoai/sign) plus a patch, and exactly this when it is the higher. It
# is stated here because package.json carries 2.7.1, the upstream Documenso
# release, which is not this image's series.
version: 0.2.0
test:
- name: build
run: |
set -euo pipefail
node scripts/lint-paths.mjs
npm ci --no-audit --no-fund
npm run lint:tx
npx turbo run build --filter=@hanzo/esign-remix
images:
- name: sign
context: .
dockerfile: docker/Dockerfile
repo: ghcr.io/hanzoai/sign
# One architecture: the live image and its pin are amd64.
platforms: [linux/amd64]