ci: brand matrix (lux/hanzo/zoo/pars) per-org GHCR push

Per ~/.claude/CLAUDE.md per-org rule (NEVER mix orgs):
- Lux  → ghcr.io/luxfi/docs
- Hanzo→ ghcr.io/hanzoai/docs
- Zoo  → ghcr.io/zooai/docs
- Pars → ghcr.io/luxfi/docs-pars (Pars is a Lux subnet)

Adds .env.example{,.hanzo,.zoo,.pars} mirroring lux/build pattern.
Cross-org GHCR pushes require GHCR_PAT secrets configured at the
hanzoai/ and zooai/ org level (existing for luxfi/).
This commit is contained in:
2026-05-05 19:19:22 -07:00
parent 6b2e593b3c
commit e76e229053
5 changed files with 81 additions and 1 deletions
+6
View File
@@ -0,0 +1,6 @@
NEXT_PUBLIC_SITE_NAME=Lux Docs
NEXT_PUBLIC_SITE_URL=https://docs.lux.network
NEXT_PUBLIC_NETWORK_NAME=Lux
NEXT_PUBLIC_NETWORK_SHORT_NAME=LUX
NEXT_PUBLIC_CHAIN_ID=96369
NEXT_PUBLIC_GITHUB_URL=https://github.com/luxfi
+6
View File
@@ -0,0 +1,6 @@
NEXT_PUBLIC_SITE_NAME=Hanzo Docs
NEXT_PUBLIC_SITE_URL=https://docs.hanzo.ai
NEXT_PUBLIC_NETWORK_NAME=Hanzo
NEXT_PUBLIC_NETWORK_SHORT_NAME=AI
NEXT_PUBLIC_CHAIN_ID=36963
NEXT_PUBLIC_GITHUB_URL=https://github.com/hanzoai
+6
View File
@@ -0,0 +1,6 @@
NEXT_PUBLIC_SITE_NAME=Pars Docs
NEXT_PUBLIC_SITE_URL=https://docs.pars.network
NEXT_PUBLIC_NETWORK_NAME=Pars
NEXT_PUBLIC_NETWORK_SHORT_NAME=PARS
NEXT_PUBLIC_CHAIN_ID=494949
NEXT_PUBLIC_GITHUB_URL=https://github.com/pars
+6
View File
@@ -0,0 +1,6 @@
NEXT_PUBLIC_SITE_NAME=Zoo Docs
NEXT_PUBLIC_SITE_URL=https://zoo.ngo/docs
NEXT_PUBLIC_NETWORK_NAME=Zoo
NEXT_PUBLIC_NETWORK_SHORT_NAME=ZOO
NEXT_PUBLIC_CHAIN_ID=200200
NEXT_PUBLIC_GITHUB_URL=https://github.com/zooai
+57 -1
View File
@@ -1,4 +1,5 @@
name: Docker
on:
workflow_dispatch:
push:
@@ -9,9 +10,64 @@ permissions:
contents: read
packages: write
# Per-brand fan-out. Each entry maps to a distinct GHCR image so :latest
# never collides between brands. Add new brands by appending to the matrix
# and creating .env.example.<brand>.
#
# Per-org GHCR push policy (from ~/.claude/CLAUDE.md):
# Lux → ghcr.io/luxfi/*
# Hanzo → ghcr.io/hanzoai/*
# Zoo → ghcr.io/zooai/*
# NEVER mix orgs. Cross-org push needs a token with `write:packages` scope on
# the target org. The reusable workflow `secrets: inherit` so the repo's
# GHCR_PAT must be configured at the org level for luxfi/, hanzoai/, zooai/.
# Confirm with: gh secret list -R luxfi/docs
jobs:
docker:
strategy:
fail-fast: false
matrix:
include:
- brand: lux
image: ghcr.io/luxfi/docs
site_name: "Lux Docs"
site_url: "https://docs.lux.network"
network_name: "Lux"
network_short_name: "LUX"
chain_id: "96369"
github_url: "https://github.com/luxfi"
- brand: hanzo
image: ghcr.io/hanzoai/docs
site_name: "Hanzo Docs"
site_url: "https://docs.hanzo.ai"
network_name: "Hanzo"
network_short_name: "AI"
chain_id: "36963"
github_url: "https://github.com/hanzoai"
- brand: zoo
image: ghcr.io/zooai/docs
site_name: "Zoo Docs"
site_url: "https://zoo.ngo/docs"
network_name: "Zoo"
network_short_name: "ZOO"
chain_id: "200200"
github_url: "https://github.com/zooai"
- brand: pars
image: ghcr.io/luxfi/docs-pars
site_name: "Pars Docs"
site_url: "https://docs.pars.network"
network_name: "Pars"
network_short_name: "PARS"
chain_id: "494949"
github_url: "https://github.com/pars"
uses: hanzoai/.github/.github/workflows/docker-build.yml@main
with:
image: ghcr.io/luxfi/docs
image: ${{ matrix.image }}
build-args: |
NEXT_PUBLIC_SITE_NAME=${{ matrix.site_name }}
NEXT_PUBLIC_SITE_URL=${{ matrix.site_url }}
NEXT_PUBLIC_NETWORK_NAME=${{ matrix.network_name }}
NEXT_PUBLIC_NETWORK_SHORT_NAME=${{ matrix.network_short_name }}
NEXT_PUBLIC_CHAIN_ID=${{ matrix.chain_id }}
NEXT_PUBLIC_GITHUB_URL=${{ matrix.github_url }}
secrets: inherit