Files
zeekayandGitHub 63411927f9 fix(exchange): pin v5.147.4 + /public path fix → live lux.exchange + zoo.exchange (#4)
* chore(k8s): pin real semver, author bank manifests, wire service-released

- mpc-api 0.1.0 → 1.1.1, mpc 0.1.0 → v1.10.1, mpc-dashboard 0.1.0 → 1.1.3
- node statefulset v1.23.31 → 1.23.31 (GHCR has bare semver, not v-prefix)
- indexer CRD tag latest → v1.0.1 across mainnet/testnet/devnet
- TODO comments on dex-gateway, dex-docs (no GHCR semver published)
- New manifests: bank-api, bank-admin, bank-dash (cluster-pinned commit-shas)
- New workflow: service-released.yml — per-service repository_dispatch listener
  opens auto-merge PR on tag publish (node, mpc, mpc-api, mpc-dashboard,
  dex-gateway, dex-docs, dex, broker, cex, bank-{api,admin,dash}, kms)
- LLM.md: documents auto-bump flow, registry conventions, drift table

* ingress: migrate static sites zoo.industries + zoo.bot to hanzoai/spa runtime

Both sites now run on ghcr.io/zooai/zoo-{industries,bot}:0.1.0, which extend
ghcr.io/hanzoai/spa:1.2.0 — the canonical static-site runtime documented in
hanzoai/[email protected]. CF DNS flipped from CNAME → pages.dev to A → 134.199.138.27
proxied=true, so CF terminates TLS at the edge and the origin sees plain HTTPS.
Pages projects zoo-industries and zoo-bot detached + deleted.

Verified live:
  https://zoo.industries        200 (Zoo Industries)
  https://www.zoo.industries    200
  https://zoo.bot               200 (Zoo Bot)
  https://www.zoo.bot           200

* chore(k8s): pin all images to semver (kill :latest, :main, etc.)

Replace forbidden mutable tags with immutable semver pins per ghcr-purge
shopping list. bootnode:web-latest digest aliased to 0.0.1-web via crane.

* fix(exchange): pin v5.147.4 + correct static path to /public

luxfi/exchange v5.147.4 ships:
- bridged tokens display bare symbols (ETH/BTC/USDC, no L-prefix)
- CI workflow fixes (cross-org → same-org reusable, lux-build
  ARC runner, dropped removed pkgs/datadog-cloud Dockerfile COPY)

Also fix initContainer path: the new image uses ghcr.io/hanzoai/spa
runtime which serves from /public, not /usr/share/nginx/html.

Affected hosts:
- lux.exchange + markets.lux.network + exchange.lux.network
- zoo.exchange (white-label, namespace lux-explorer)
- pars.market  (white-label, namespace lux-explorer)

---------
2026-05-02 20:05:51 -07:00

81 lines
2.0 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: lux-cloud-web
namespace: bootnode
labels:
app: lux-cloud-web
component: frontend
brand: lux
spec:
replicas: 2
selector:
matchLabels:
app: lux-cloud-web
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
template:
metadata:
labels:
app: lux-cloud-web
component: frontend
brand: lux
spec:
containers:
- name: web
image: ghcr.io/hanzoai/bootnode:0.0.1-web
imagePullPolicy: Always
ports:
- name: http
containerPort: 3001
protocol: TCP
env:
- name: NODE_ENV
value: production
- name: BRAND
value: lux
- name: NEXT_PUBLIC_BRAND
value: lux
- name: NEXT_PUBLIC_API_URL
value: https://api.cloud.lux.network
- name: NEXT_PUBLIC_WS_URL
value: wss://ws.cloud.lux.network
- name: NEXT_PUBLIC_IAM_URL
value: https://lux.id
- name: NEXT_PUBLIC_IAM_CLIENT_ID
value: lux-cloud
- name: NEXT_PUBLIC_IAM_DOMAIN
value: lux.id
- name: NEXT_PUBLIC_AUTH_MODE
value: iam
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 3
securityContext:
runAsNonRoot: true
runAsUser: 1001
allowPrivilegeEscalation: false