Replace the single-job amd64-only workflow with a native runner matrix
strategy to produce proper multi-arch Docker images without QEMU.
Why QEMU doesn't work:
- Node.js V8 JIT generates instructions QEMU user-mode emulation
mis-handles, causing SIGILL crashes during npm install on arm64.
How it works now:
- linux/amd64 builds on ubuntu-latest (native)
- linux/arm64 builds on ubuntu-24.04-arm (native GitHub ARM runner)
- Each job pushes its image by digest to GHCR
- A merge job combines both digests into a single multi-arch manifest
list via docker buildx imagetools create
Also removes the dorny/paths-filter changes job — the on.push.paths
trigger already gates the workflow to relevant file changes, so the
extra conditional layer is unnecessary.
- CI/CD now only rebuilds images when backend/ or frontend/ changes
- Uses dorny/paths-filter to detect which components changed
- README, docs, and asset changes no longer trigger builds
- Updated CHANGELOG with all recent changes
- Bumped version to 1.0.1
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Builds and pushes images to GitHub Container Registry:
- ghcr.io/clucraft/priceghost-backend
- ghcr.io/clucraft/priceghost-frontend
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>