From 2dfbef32a28f5ecd26f7bd20db47c6005f7bc244 Mon Sep 17 00:00:00 2001 From: Hanzo AI Date: Thu, 23 Apr 2026 19:21:20 -0700 Subject: [PATCH 1/5] ci: migrate to canonical docker-build reusable - Add docker.yml using hanzoai/.github/.github/workflows/docker-build.yml@main - Add workflow-sanity.yml to enforce canonical CI contract - Remove bespoke docker build steps from existing workflows Refs: hanzoai/.github canonical Docker CI contract. --- .github/workflows/build.yml | 81 --------------------------- .github/workflows/ci.yml | 40 ++++--------- .github/workflows/docker.yml | 17 ++++++ .github/workflows/release.yml | 25 --------- .github/workflows/workflow-sanity.yml | 9 +++ 5 files changed, 36 insertions(+), 136 deletions(-) delete mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/docker.yml delete mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/workflow-sanity.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 4511ee6..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,81 +0,0 @@ -name: Build Explorer - -on: - workflow_dispatch: - push: - branches: [main] - tags: ['v*'] - repository_dispatch: - types: [indexer-updated, graph-updated, explore-updated] - -env: - REGISTRY: ghcr.io - IMAGE: ghcr.io/luxfi/explorer - -jobs: - build: - strategy: - matrix: - include: - - runner: lux-build-amd64 - platform: linux/amd64 - - runner: lux-build-arm64 - platform: linux/arm64 - runs-on: ${{ matrix.runner }} - permissions: - contents: read - packages: write - steps: - - uses: actions/checkout@v4 - - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - uses: docker/metadata-action@v5 - id: meta - with: - images: ${{ env.IMAGE }} - tags: | - type=ref,event=branch - type=semver,pattern=v{{version}} - type=sha - - uses: docker/build-push-action@v5 - with: - context: . - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - build-args: | - VERSION=${{ github.ref_name }} - INDEXER_REF=main - GRAPH_REF=main - EXPLORE_REF=main - - manifest: - needs: build - runs-on: lux-build-amd64 - permissions: - packages: write - steps: - - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - uses: docker/metadata-action@v5 - id: meta - with: - images: ${{ env.IMAGE }} - tags: | - type=ref,event=branch - type=semver,pattern=v{{version}} - type=sha - - name: Create multi-arch manifest - run: | - for tag in ${{ steps.meta.outputs.tags }}; do - docker manifest create "$tag" \ - --amend "$tag" \ - --amend "$tag" || true - docker manifest push "$tag" || true - done diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e4ec74e..fc30e83 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,38 +1,18 @@ name: CI on: push: - branches: [main] + branches: + - main pull_request: - branches: [main] + branches: + - main jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version-file: go.mod - - run: go mod download - - run: go test ./... && go build ./... - docker: - needs: test - if: github.ref == 'refs/heads/main' - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - - uses: actions/checkout@v4 - - uses: docker/setup-buildx-action@v3 - - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - uses: docker/build-push-action@v5 - with: - push: true - platforms: linux/amd64,linux/arm64 - tags: | - ghcr.io/${{ github.repository }}:main - ghcr.io/${{ github.repository }}:latest + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version-file: go.mod + - run: go mod download + - run: go test ./... && go build ./... diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..62552fd --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,17 @@ +name: Docker +on: + workflow_dispatch: + push: + branches: [main, dev, test] + tags: ['v*'] + +permissions: + contents: read + packages: write + +jobs: + docker: + uses: hanzoai/.github/.github/workflows/docker-build.yml@main + with: + image: ghcr.io/luxfi/explorer + secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 3004d52..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Release -on: - push: - tags: ['v*'] -jobs: - release: - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - - uses: actions/checkout@v4 - - uses: docker/setup-buildx-action@v3 - - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - uses: docker/build-push-action@v5 - with: - push: true - platforms: linux/amd64,linux/arm64 - tags: | - ghcr.io/${{ github.repository }}:${{ github.ref_name }} - ghcr.io/${{ github.repository }}:latest diff --git a/.github/workflows/workflow-sanity.yml b/.github/workflows/workflow-sanity.yml new file mode 100644 index 0000000..7ea88e7 --- /dev/null +++ b/.github/workflows/workflow-sanity.yml @@ -0,0 +1,9 @@ +name: Workflow Sanity +on: + pull_request: + push: + branches: [main] + +jobs: + sanity: + uses: hanzoai/.github/.github/workflows/workflow-sanity.yml@main From 15839c07b844bcabf673c7fc15879329bafdad5f Mon Sep 17 00:00:00 2001 From: z Date: Tue, 5 May 2026 19:08:29 -0700 Subject: [PATCH 2/5] ci: build multi-arch (amd64 + arm64) on native runners Drop branch triggers, semver-only tags. Pin lux-build-linux-{amd64,arm64} ARC runners. Eliminates the amd64-only manifest that crashed Apple Silicon local k3d pulls. --- .github/workflows/docker.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 62552fd..2d30563 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,16 +2,22 @@ name: Docker on: workflow_dispatch: push: - branches: [main, dev, test] tags: ['v*'] permissions: contents: read packages: write +# Multi-arch (amd64 + arm64) on native lux ARC runners. +# No QEMU emulation. No GitHub-hosted fallback. +# Semver-only tags (v*); see hanzoai/.github docker-build.yml. jobs: docker: uses: hanzoai/.github/.github/workflows/docker-build.yml@main with: image: ghcr.io/luxfi/explorer + platforms: linux/amd64,linux/arm64 + runner-amd64: lux-build-linux-amd64 + runner-arm64: lux-build-linux-arm64 + runner-deploy: lux-build-linux-amd64 secrets: inherit From f244f6cf4d4d0e45649025ba280e6606ce417f61 Mon Sep 17 00:00:00 2001 From: Hanzo AI Date: Tue, 5 May 2026 19:21:59 -0700 Subject: [PATCH 3/5] explorer: remove Liquidity branding cross-contamination Drop the _lqd._tcp / lqd / liquid daemon entry from the mDNS service discovery list. The lqd daemon is the Liquidity-side white-label node binary; the OSS Lux explorer must not advertise it. --- mdns.go | 1 - 1 file changed, 1 deletion(-) diff --git a/mdns.go b/mdns.go index 004e0a7..5fd6886 100644 --- a/mdns.go +++ b/mdns.go @@ -19,7 +19,6 @@ var daemonServices = []struct { }{ {"_luxd._tcp", "luxd", "lux"}, {"_zood._tcp", "zood", "zoo"}, - {"_lqd._tcp", "lqd", "liquid"}, {"_hanzod._tcp", "hanzod", "hanzo"}, {"_parsd._tcp", "parsd", "pars"}, } From 4249b174abd7444983e3f49fc997c0be8b14c248 Mon Sep 17 00:00:00 2001 From: hanzo-dev Date: Tue, 5 May 2026 19:51:27 -0700 Subject: [PATCH 4/5] ci: use hanzo-* runner labels (sanity) --- .github/workflows/ci.yml | 2 +- .github/workflows/docker.yml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fc30e83..6dcc8fe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,7 +8,7 @@ on: - main jobs: test: - runs-on: ubuntu-latest + runs-on: hanzo-build-linux-amd64 steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 2d30563..e31df7c 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -8,7 +8,7 @@ permissions: contents: read packages: write -# Multi-arch (amd64 + arm64) on native lux ARC runners. +# Multi-arch (amd64 + arm64) on native hanzo ARC runners. # No QEMU emulation. No GitHub-hosted fallback. # Semver-only tags (v*); see hanzoai/.github docker-build.yml. jobs: @@ -17,7 +17,7 @@ jobs: with: image: ghcr.io/luxfi/explorer platforms: linux/amd64,linux/arm64 - runner-amd64: lux-build-linux-amd64 - runner-arm64: lux-build-linux-arm64 - runner-deploy: lux-build-linux-amd64 + runner-amd64: hanzo-build-linux-amd64 + runner-arm64: hanzo-build-linux-arm64 + runner-deploy: hanzo-deploy-linux-amd64 secrets: inherit From 6aaf36e10bc543035ee5f8610ce7c2580bbcf68a Mon Sep 17 00:00:00 2001 From: hanzo-dev Date: Tue, 5 May 2026 19:58:27 -0700 Subject: [PATCH 5/5] ci: register hanzo runner labels for actionlint --- .github/actionlint.yaml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .github/actionlint.yaml diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml new file mode 100644 index 0000000..a385c06 --- /dev/null +++ b/.github/actionlint.yaml @@ -0,0 +1,5 @@ +self-hosted-runner: + labels: + - hanzo-build-linux-amd64 + - hanzo-build-linux-arm64 + - hanzo-deploy-linux-amd64