fix(ci): pin QEMU setup in release.yml to stop arm64 npm ci crash - #215
Merged
Conversation
…i crash The docker-publish job's linux/arm64 leg relied on whatever QEMU binfmt the runner image ships by default, which crashes mid-npm ci with 'qemu: uncaught target signal 4 (Illegal instruction) - core dumped'. This happened on v3.3.19 (job ran until the 6h default timeout) and again on v3.3.25 (both the primary attempt and its retry hung for their full 30m timeouts, identically crashing at the same step ~29s into npm ci, so the image never published for that release). docker-modern.yml already pins docker/setup-qemu-action@v4 before buildx setup and has had zero arm64 crashes across its last 5 runs, so add the same step to release.yml's docker-publish job.
Reviewer's guide (collapsed on small PRs)Reviewer's GuidePins QEMU setup in the release Docker publish workflow to use a known-good multi-platform emulator for arm64, mirroring the configuration used in docker-modern.yml to prevent npm ci crashes during arm64 builds. Flow diagram for updated QEMU setup in release Docker publish workflowflowchart LR
subgraph docker_publish_job
checkout["📥 Checkout Code"] --> setup_qemu["🐳 Set up QEMU (Multi-platform)"] --> setup_buildx["🐳 Set up Docker Buildx"]
end
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey - I've left some high level feedback:
- The QEMU setup step’s inline comment is quite long and incident-specific; consider trimming it to the essential rationale (e.g., ‘pin QEMU to avoid arm64 npm ci crashes seen on previous releases’) to keep the workflow file easier to scan and maintain.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The QEMU setup step’s inline comment is quite long and incident-specific; consider trimming it to the essential rationale (e.g., ‘pin QEMU to avoid arm64 npm ci crashes seen on previous releases’) to keep the workflow file easier to scan and maintain.Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
There was a problem hiding this comment.
Pull request overview
This PR stabilizes the Docker multi-architecture (linux/amd64, linux/arm64) publish step in the release workflow by explicitly installing a known QEMU/binfmt setup instead of relying on the runner’s default emulator.
Changes:
- Add an explicit
docker/setup-qemu-action@v4step to thedocker-publishjob inrelease.yml. - Align
release.yml’s multi-arch setup ordering with the already-workingdocker-modern.ymlpattern (QEMU → Buildx).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
release.yml'sdocker-publishjob buildslinux/amd64,linux/arm64but never explicitly set up QEMU — it relied on whatever binfmt emulator theubuntu-latestrunner image ships by default.npm cion the emulatedarm64leg withqemu: uncaught target signal 4 (Illegal instruction) - core dumped, then hangs instead of failing fast.docker pullverification step to contain the damage and report failure honestly — but none of that fixes the underlying crash.npm ci), each ran its full 30-minute timeout, and the image was never published —docker.io/docdyhr/mcp-wordpress:3.3.25doesn't exist,latestis still stamped from 3.3.24.docker-modern.ymlalready pinsdocker/setup-qemu-action@v4before its buildx setup and has had zero arm64 crashes across its last 5 runs. This PR adds the same step torelease.yml'sdocker-publishjob.Test plan
js-yaml)npx prettier --checkpasses on the changed file🤖 Generated with Claude Code
Summary by Sourcery
CI: