fix(build): verify controller binaries match target architecture - #7
Conversation
|
DNS API v0.2.9 release request Source: cb8b8dd, merged PR #7. Intent: repair the mislabeled ARM64 executable in v0.2.8 without overwriting that published version. Pre-publication evidence:
The version tag will be fixed to the selected source after exact-main CI and edge publication complete. No silent workflow retry. Final acceptance includes registry digest/config revision readback, extraction of both released executables and ELF verification, and chart version/appVersion verification. |
v0.2.9 merge and release completed
Registry and executable readbackImage: ghcr.io/appthrust/dns-api:0.2.9 AMD64 manifest: sha256:7b3c9de9333108425fbf09274efa3983cef7988e7bc83fcae088f4f1abaf60a5
ARM64 manifest: sha256:e15454d25bee085ee31e11629c76688bf0b24639809f3c543e1722889d0ca97d
Both image config revision labels equal cb8b8dd; both version labels equal 0.2.9. This verifies the executable architecture, not merely the OCI platform label. Chart: oci://ghcr.io/appthrust/charts/dns-api:0.2.9 Boundaries
|
Problem
Fixes #6.
The Dockerfile default
ARG TARGETARCH=amd64overrides BuildKit's target, so the ARM64 runtime manifest receives an x86-64/manager. OCI platform labels do not prove the executable's architecture.Change
/managerinto the runtime image. The verifier runs natively on BUILDPLATFORM and uses only the Go standard library.No release identity/credential/visibility expansion, API/runtime reconciliation changes, or modifications to published v0.2.8.
Verification
/managerfrom each final image:filereports x86-64 and ARM aarch64 respectively.--help: exit 0.--helpexit 0. Native ARM64 execution is unavailable on this x86 host without binfmt; no host registration or privileged emulator installation was performed. This is not an ARM64 Kubernetes certification.--platform linux/arm64 --build-arg TARGETARCH=amd64: build failed before final image generation with EM_X86_64 versus EM_AARCH64 mismatch.Local image IDs:
No shared/live deployment or registry publication performed. A subsequent release must use a new version; v0.2.8 remains immutable.