Skip to content

Build release images natively per architecture (fixes the v0.4.0-alpha arm64 failure) - #250

Open
mvalancy wants to merge 1 commit into
devfrom
ci/native-arm64-images
Open

mvalancy wants to merge 1 commit into
devfrom
ci/native-arm64-images

Conversation

@mvalancy

@mvalancy mvalancy commented Nov 8, 2026

Copy link
Copy Markdown
Member

The v0.4.0-alpha release run (42435620415) passed its source gate, then failed publishing.

  • Cause: the arm64 API build crashed under QEMU emulation during npm ci: qemu: uncaught target signal 4 (Illegal instruction). The same emulated step (same QEMU 10.2.3) took 19 minutes and passed in Docker Build Validation, so emulation is both slow and intermittently broken.
  • What was published: only graphdone-neo4j:0.4.0-alpha. Web was cancelled, and no GitHub release and no latest move happened.

Change

  • release.yml:
    • images builds each image × architecture natively on ubuntu-24.04 / ubuntu-24.04-arm and pushes by digest only (no tag), with SBOM and provenance.
    • A new manifests job joins the two digests into :<version>. It refuses an index that lacks either linux/amd64 or linux/arm64, and records the index digest for the release notes.
    • github-release (decide latest, move it for all images together, create the release) now needs manifests.
  • docker-publish.yml (Docker Build Validation): the same native per-architecture builds, with no registry writes, and GHA cache scoped per image and architecture.
  • QEMU: removed from both workflows.
  • Tests (tests/lib/release/workflows.test.mjs):
    • Expand the matrices and pin the native runners for all 6 combinations.
    • Assert no setup-qemu-action, digest-only platform pushes, and that version tags are created only in manifests (never latest), with latest moved only after the decision in github-release.
    • Negative control: the old workflows fail 4 of the new tests.
  • Local results: workflow tests 34/34, test:unified:lib 291/291, actionlint clean.

Because a tag runs the workflow at its own commit, v0.4.0-alpha cannot be re-run with this fix. The next release is v0.4.1-alpha.

🤖 Generated with Claude Code

The v0.4.0-alpha release failed: the arm64 API build crashed under QEMU with
"Illegal instruction" during npm ci (the same emulated step took 19 minutes and
passed in validation). Build each image natively on ubuntu-24.04 and
ubuntu-24.04-arm, push each platform by digest, then join both digests into the
version tag and refuse an index that lacks either architecture. Docker Build
Validation runs the same native per-architecture builds. Workflow tests pin the
runners, the absence of QEMU, digest-only platform pushes, and that only the
manifests job tags versions and only the final job moves latest.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 8, 2026

Copy link
Copy Markdown

🧪 Comprehensive Test Suite

  • Unit suites (Node 22.18.0 & 24.x) — core, web, server, mcp-server: ✅ passed
  • Installer & deploy config: ✅ passed

Full-stack smoke gate runs in the CI workflow.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant