PR #547 refreshed the sensing-server docker publish and the README badge advertises 'Docker: multi-arch amd64 + arm64', but .github/workflows/sensing-server-docker.yml only sets 'platforms: linux/amd64'. The arm64 layer was never actually wired in. Consequence on Docker Hub today (ruvnet/wifi-densepose:latest, last pushed 2026-05-14 by #547): $ curl -s https://hub.docker.com/v2/repositories/ruvnet/wifi-densepose/tags/latest/ images: arch=amd64 os=linux arch=unknown os=unknown # the 1.5KB attestation layer, not arm64 So Apple Silicon Macs (the platform in #625) hit: docker pull ruvnet/wifi-densepose:latest Error: no matching manifest for linux/arm64/v8 in the manifest list This is the same crash class as the closed-unmerged #136 'Docker error on MacOS'; #625 is a fresh report (Mac M3 Pro, macOS Tahoe 26.4.1) of the same bug. Fix is the standard buildx multi-arch recipe: 1. Add docker/setup-qemu-action@v3 before setup-buildx so the amd64 runner can cross-build the arm64 layer (QEMU user-mode emulation). 2. Change 'platforms: linux/amd64' -> 'platforms: linux/amd64,linux/arm64'. docker/Dockerfile.rust is already arch-agnostic — no '--target' flag, no amd64-only Cargo deps, only 'cc = "1.0"' which is cross-aware — so no Dockerfile changes are needed. Buildx + QEMU does the rest. Smoke tests are unaffected: they 'docker pull' on ubuntu-latest (amd64), so the runner auto-selects the amd64 entry from the multi-arch manifest. Multi-arch manifests are transparent to single-arch consumers. Scope discipline: this PR only touches sensing-server-docker.yml (the file issue #625 is about). nvsim-server-docker.yml has the identical 'platforms: linux/amd64' bug but is out of scope here — happy to file a follow-up if useful. Note (not part of this fix): the last 5 runs of this workflow have failed at the 'Log in to Docker Hub' step (DOCKERHUB_TOKEN secret looks rotated/ expired). That's a separate, secret-side issue I can't touch from a PR. Once that's resolved, the next push to main will produce a proper amd64+arm64 manifest for the first time. Co-authored-by: Mack Ding <mack@claws.ltd>
This commit is contained in:
parent
e964eaf14f
commit
f54f0285bd
|
|
@ -50,6 +50,12 @@ jobs:
|
|||
with:
|
||||
submodules: recursive
|
||||
|
||||
# QEMU is required so the amd64 GitHub runner can cross-build the
|
||||
# linux/arm64 layer below (Dockerfile.rust is arch-agnostic — no `--target`
|
||||
# flag — so buildx + QEMU is all that's needed; arm64 builds are emulated
|
||||
# by the runner, not built on a separate arm64 host).
|
||||
- uses: docker/setup-qemu-action@v3
|
||||
|
||||
- uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Log in to Docker Hub
|
||||
|
|
@ -90,7 +96,11 @@ jobs:
|
|||
labels: ${{ steps.meta.outputs.labels }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
platforms: linux/amd64
|
||||
# README badge advertises `amd64 + arm64`, and #547 promised multi-arch
|
||||
# as part of the docker publish refresh; arm64 was never actually wired
|
||||
# in, so Apple Silicon Macs hit `no matching manifest for linux/arm64/v8`
|
||||
# on `docker pull ruvnet/wifi-densepose:latest` (#136, #625). Build both.
|
||||
platforms: linux/amd64,linux/arm64
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Smoke-test the freshly-pushed image:
|
||||
|
|
|
|||
Loading…
Reference in New Issue