ci: native six-platform release matrix + multi-arch container

goreleaser builds the six-platform binary matrix (linux/darwin/windows ×
amd64/arm64) with SBOMs and checksums on `v*` tag push. docker.yml is
pinned to the lux-build-linux-{amd64,arm64} ARC runners (native, no
QEMU) and delegates to the canonical hanzoai/.github reusable workflow.
release.yml triggers on `v*` tags and runs on the lux-build self-hosted
scale-set.
This commit is contained in:
2026-05-24 01:10:33 -07:00
parent 53e80aaa11
commit c3ad56cda8
3 changed files with 129 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
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/broker
# Native multi-arch on lux-org ARC scale-sets — no QEMU.
runner-amd64: lux-build-linux-amd64
runner-arm64: lux-build-linux-arm64
runner-deploy: lux-deploy-linux-amd64
secrets: inherit
+45
View File
@@ -0,0 +1,45 @@
name: Release
# Native binary release for brokerd on `v*` tags.
#
# Six-platform matrix (linux/darwin/windows × amd64/arm64) via goreleaser.
# Container image is built independently by .github/workflows/docker.yml
# (native multi-arch ARC runners — NO QEMU).
#
# Runner labels: lux-build self-hosted ARC scale-sets per the org policy.
# GitHub-hosted runners are NOT a permitted fallback.
on:
push:
tags: ['v*']
workflow_dispatch:
permissions:
contents: write
packages: write
id-token: write
jobs:
goreleaser:
runs-on: lux-build
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Install syft for SBOM
run: |
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh \
| sh -s -- -b /usr/local/bin
- uses: goreleaser/goreleaser-action@v6
with:
distribution: goreleaser
version: "~> v2"
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+63
View File
@@ -0,0 +1,63 @@
# goreleaser config for brokerd.
#
# Triggered by the release workflow on `v*` tag push. Builds native
# binaries for all six policy platforms, produces tarballs + zips +
# checksums + SBOM, and attaches them to the GitHub Release.
#
# Container images are built separately by `.github/workflows/docker.yml`
# (native multi-arch via hanzoai/.github reusable workflow).
version: 2
project_name: brokerd
before:
hooks:
- go mod tidy
builds:
- id: brokerd
main: ./cmd/brokerd
binary: brokerd
env:
- CGO_ENABLED=0
flags:
- -trimpath
ldflags:
- -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}
goos:
- linux
- darwin
- windows
goarch:
- amd64
- arm64
archives:
- id: brokerd
builds: [brokerd]
name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
format_overrides:
- goos: windows
format: zip
files:
- LICENSE*
- README*
checksum:
name_template: checksums.txt
sboms:
- artifacts: archive
snapshot:
version_template: "{{ incpatch .Version }}-next"
changelog:
use: github
sort: asc
release:
draft: false
prerelease: auto
mode: append