ci: build arm64 sandbox-api and hub images, submit arm64 mk3 builds - #275
ci: build arm64 sandbox-api and hub images, submit arm64 mk3 builds#275devin-ai-integration[bot] wants to merge 4 commits into
Conversation
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
…by a failure Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 218b77b. Configure here.
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
🧪 Testing GuideWhat this PR addressesThis PR enables ARM64 (aarch64) builds for the sandbox ecosystem. Previously, the arm64 sandbox-api job ran on an amd64 runner with
Steps to verify (CI/workflow-level change)Since this is a CI infrastructure change, there are no local reproduction steps. Instead, validate:
What to verify (expected behavior)
Note Posted by PR Testing Guide · Tag @mendral-app with feedback. |
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
There was a problem hiding this comment.
LGTM
The new commit correctly excludes arm64-incompatible images from the matrix using GitHub Actions' native exclude mechanism. The exclusion JSON structure [{sandbox: ..., arch: "arm64"}] matches the matrix dimension names. The overall PR is solid: native arm64 runner, proper if guard against stale sandbox-api, arch-aware mk3 build, and Dockerfile parameterization all look correct.
Tag @mendral-app with feedback or questions. View session

Summary
Makes the whole sandbox build chain able to produce ARM sandboxes. amd64 behaviour is unchanged: arm64 is opt-in through a new
architecturesworkflow_dispatch input (amd64|arm64|amd64,arm64, defaultamd64), which becomes a matrix dimension for both hub jobs.sandbox-api: the arm64 job existed but ran
platforms: linux/arm64on an amd64 runner with no QEMU andcontinue-on-error: true, so its digest was usually missing from the manifest list. It now runs on a nativeubuntu-24.04-armrunner (the binary is cgo/static-pielinked, so it can't be cross-compiled), is no longer allowed to fail, and the manifest job waits for it. The multi-archsandbox:developmanifest is what makes the hubFROM ghcr.io/blaxel-ai/sandbox:${SANDBOX_VERSION}stage resolve per-arch for free.hub images: built per arch on the matching runner and pushed under an
-arm64suffixed tag (develop-arm64,v1.2.3-arm64, …) rather than merged into one manifest, since the downstream mk3 artifacts are per-arch anyway. GHA cache scope is now per sandbox+arch.mk3 build:
scripts/mk3-build.shtakesARCH(defaultamd64) and derivesso arm64 artifacts land next to the amd64 ones (
s3://…/sbx/<name>/<tag>-arm64) and are registered inPUT /admin/imagesunder the-arm64tag. Thepublish-sandbox.shstep (which points the hub store entry atblaxel/<name>:latest) only runs for amd64, so the store keeps advertising the amd64 image.Requires blaxel-ai/metamorph#81 (arch-aware kernel/wrapper/blfs selection) to be deployed for
--platform linux/arm64builds to produce usable artifacts.Link to Devin session: https://app.devin.ai/sessions/1f2fece946bb4e74b9bd1d42b5645be7
Requested by: @Joffref
Note
Cursor Bugbot is generating a summary for commit 9d5ff97. Configure here.
Note
Adds arm64 matrix exclusions for hub images that cannot be built on arm64 (jupyter-server, vibekit-*). The exclusion list is generated as a job output and applied to both
build-ghcr-hubandbuild-s3-hubmatrix strategies.Written by Mendral for commit 339a790.