Current state
README.md:317 — "Pre-built server binaries are Linux x86_64 only. macOS and ARM targets are planned."
Targets
linux-x86_64 (existing)
linux-aarch64
darwin-x86_64
darwin-aarch64
Approach
GitHub Actions matrix — one job per (os, arch). GraalVM native-image cross-compilation is unreliable; build natively on each runner.
| Target |
Runner |
| linux-x86_64 |
ubuntu-latest |
| linux-aarch64 |
ubuntu-24.04-arm |
| darwin-x86_64 |
macos-13 |
| darwin-aarch64 |
macos-latest (Apple Si) |
Implementation
.github/workflows/release.yml — matrix job:
setup-java → distribution: graalvm-community, java-version: 25.
./gradlew :hensu-server:build -Dquarkus.package.type=native -Dquarkus.native.container-build=false.
- Artifact name:
hensu-server-${version}-${os}-${arch}.
actions/upload-artifact per leg.
- Release job (
needs: all matrix legs) — download artifacts, gh release upload to tag.
shasum -a 256 per binary → publish SHA256SUMS.
- README.md:317 — replace Linux-only note with a download table for the four targets.
Native-image gotchas
- aarch64 musl static linking unsupported → dynamic libc on Linux ARM.
reflect-config.json validated per target (missing entries surface only at target runtime).
- macOS Xcode CLT preinstalled on GH runners — no extra setup.
Out of scope
- Windows binaries.
- Homebrew / apt / Docker manifest list.
- macOS code signing + notarization (Gatekeeper warning remains until addressed).
Acceptance
- Tagging
vX.Y.Z produces 4 binaries + SHA256SUMS on the GH release.
- README.md install section links each target.
- CI time per leg < 25 min.
Current state
README.md:317 — "Pre-built server binaries are Linux x86_64 only. macOS and ARM targets are planned."
Targets
linux-x86_64(existing)linux-aarch64darwin-x86_64darwin-aarch64Approach
GitHub Actions matrix — one job per
(os, arch). GraalVMnative-imagecross-compilation is unreliable; build natively on each runner.ubuntu-latestubuntu-24.04-armmacos-13macos-latest(Apple Si)Implementation
.github/workflows/release.yml— matrix job:setup-java→distribution: graalvm-community,java-version: 25../gradlew :hensu-server:build -Dquarkus.package.type=native -Dquarkus.native.container-build=false.hensu-server-${version}-${os}-${arch}.actions/upload-artifactper leg.needs:all matrix legs) — download artifacts,gh release uploadto tag.shasum -a 256per binary → publishSHA256SUMS.Native-image gotchas
reflect-config.jsonvalidated per target (missing entries surface only at target runtime).Out of scope
Acceptance
vX.Y.Zproduces 4 binaries +SHA256SUMSon the GH release.