ci: lux-only build — never push other-brand images to luxfi org

Per registry-separation rule (CLAUDE.md "Container Registries — NEVER
MIX"), luxfi/explore must only push the Lux brand. Other-brand images
(hanzoai/explore, zooai/explore, etc.) build from each brand's own
org repo, never from this one.

The source still supports white-label brand selection at runtime
(lib/white-label.ts inspects hostname or NEXT_PUBLIC_BRAND), so a
single Lux image can serve any brand at deploy time. Build-time brand
baking is reserved for per-org image variants — out of scope here.

Also drops the Lux-only frontend rollout list down to mainnet/testnet/
devnet — non-Lux deployments live in their own clusters.
This commit is contained in:
2026-05-05 23:13:40 -07:00
parent f70a969ded
commit b03e9437b3
2 changed files with 13 additions and 24 deletions
+12 -24
View File
@@ -1,5 +1,12 @@
name: Build and Deploy LUX Explorer
# Builds the Lux-branded explorer image only. The source supports
# white-label brand selection at runtime (lib/white-label.ts inspects
# hostname or NEXT_PUBLIC_BRAND), so a single image serves any brand
# at deploy time. Per-brand images for hanzo / zoo / pars are built
# from each brand's own org repo (ghcr.io/hanzoai, ghcr.io/zooai, …) —
# never from this repo.
on:
push:
branches:
@@ -22,28 +29,12 @@ concurrency:
env:
REGISTRY: ghcr.io
# Single-arch (amd64) build — luxfi org's native ARC pool currently only
# provisions lux-build-linux-amd64. arm64 native runner is pending; the
# matrix below adds it back as soon as the scale-set is online.
jobs:
build:
name: Build ${{ matrix.brand }}
runs-on: lux-build-linux-amd64
permissions:
contents: read
packages: write
strategy:
fail-fast: false
matrix:
include:
- brand: lux
image: luxfi/explore
- brand: hanzo
image: luxfi/explore-hanzo
- brand: zoo
image: luxfi/explore-zoo
- brand: pars
image: luxfi/explore-pars
steps:
- name: Checkout
uses: actions/checkout@v4
@@ -62,7 +53,7 @@ jobs:
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ matrix.image }}
images: ${{ env.REGISTRY }}/luxfi/explore
flavor: |
latest=auto
tags: |
@@ -77,14 +68,14 @@ jobs:
platforms: linux/amd64
labels: ${{ steps.meta.outputs.labels }}
tags: ${{ steps.meta.outputs.tags }}
cache-from: type=gha,scope=${{ matrix.brand }}
cache-to: type=gha,mode=max,scope=${{ matrix.brand }}
cache-from: type=gha,scope=lux
cache-to: type=gha,mode=max,scope=lux
provenance: false
push: ${{ github.event_name != 'pull_request' }}
build-args: |
GIT_COMMIT_SHA=${{ github.sha }}
GIT_TAG=${{ github.ref_type == 'tag' && github.ref_name || '' }}
NEXT_PUBLIC_BRAND=${{ matrix.brand }}
NEXT_PUBLIC_BRAND=lux
deploy:
needs: build
@@ -153,10 +144,7 @@ jobs:
kubectl apply -f deploy/k8s/frontend-testnet.yaml -n lux-testnet || true
kubectl apply -f deploy/k8s/frontend-devnet.yaml -n lux-devnet || true
for dep in lux-frontend-mainnet lux-frontend-zoo lux-frontend-hanzo lux-frontend-spc lux-frontend-pars; do
kubectl rollout restart deployment/$dep -n lux-mainnet || true
done
kubectl rollout restart deployment/lux-frontend-mainnet -n lux-mainnet || true
kubectl rollout restart deployment/lux-frontend-testnet -n lux-testnet || true
kubectl rollout restart deployment/lux-frontend-devnet -n lux-devnet || true
+1
View File
@@ -35,6 +35,7 @@
"words": [
"aatx",
"hanzoai",
"zooai",
"abfnrtv",
"abitype",
"AIVM",