ci: drop arm64 from release builds, opt into Node 24, bump timeout#132
Conversation
The v0.1.0 build hit the 60-minute job timeout while still in `Build & push Docker image`. Root cause: linux/arm64 emulation via QEMU on a Gitea-derived multi-stage build (~1.3 GB image) is too slow for the default Actions hosted runner. The amd64 portion of the same build typically finishes in ~10 minutes; arm64 alone was projected to take another 60+ minutes. Four changes to .github/workflows/release.yml, all in service of getting a working v0.1.0: 1. Main image platforms: linux/amd64,linux/arm64 -> linux/amd64 2. Updater image platforms: same change (PR #129 added arm64 to the updater build by symmetry; same problem) 3. release.json IMAGE_PLATFORMS env: linux/amd64 (so the published manifest accurately reflects what was actually built) 4. timeout-minutes: 60 -> 90 (belt-and-braces; amd64 alone won't come close to either, but the cushion costs nothing) Plus a small future-proofing: add `env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"` at the workflow level. GitHub is deprecating Node 20 in JavaScript actions on June 2nd, 2026; opting in now silences the warning and makes the runtime explicit. All used actions (setup-go@v5, docker/*, sigstore/cosign-installer@v3, softprops/action-gh-release@v2) already work under Node 24 — this just tells the runner to use it. arm64 publication is deferred, not abandoned. Two paths to add it back later: - Native arm64 hosted runner (now available on GH paid plans; no QEMU = build time matches amd64). - Self-hosted arm64 runner. Either makes a follow-up PR that adds linux/arm64 back to the platforms lines a one-line change. Not blocking v0.1; almost no production ProcessGit deployment in scope today runs arm64. After this lands, the recovery procedure is: - Delete the existing v0.1.0 tag (workflow hit its timeout against the old release.yml on that tag) - Re-tag v0.1.0 against the new main HEAD - Workflow re-runs; expected wall clock ~10-15 min for amd64-only Co-authored-by: Claude <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 332eab5060
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| context: . | ||
| file: deploy/Dockerfile.processgit | ||
| platforms: linux/amd64,linux/arm64 | ||
| platforms: linux/amd64 |
There was a problem hiding this comment.
Keep published release notes in sync with built platforms
After changing the build platform to linux/amd64 here, the release-notes generator in the same workflow still hardcodes both linux/amd64 and linux/arm64 in its output (see the Generate release notes step around lines 333–336). On every tagged release this will advertise arm64 support that is no longer built, so arm64 users can follow the notes and hit a missing-manifest pull failure. Please update the notes generation to use the same platform source as the build/release metadata.
Useful? React with 👍 / 👎.
Fix v0.1.0 build: drop arm64, opt into Node 24, bump timeout
The v0.1.0 build hit the 60-min job timeout in
Build & push Docker image. Root cause is well-understood — linux/arm64 via QEMU emulation on a ~1.3 GB Gitea-derived image just doesn't fit in the default Actions hosted runner. amd64 alone typically finishes in ~10 min.Changes (4)
linux/amd64,linux/arm64→linux/amd64release.jsonIMAGE_PLATFORMSenv:linux/amd64(so the published manifest accurately reflects what was built — important for any updater logic that checks platform compatibility)timeout-minutes: 60 → 90 (cushion; amd64 alone shouldn't come close)Plus a small future-proofing:
env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true". GitHub is forcing the default Node runtime for JavaScript actions to Node 24 on June 2nd 2026; opting in now silences today's deprecation warning and locks the runtime in. All used actions (setup-go@v5, docker/build-push-action@v6, docker/login-action@v3, docker/metadata-action@v5, docker/setup-{buildx,qemu}-action@v3, sigstore/cosign-installer@v3, softprops/action-gh-release@v2) already work under Node 24.arm64 is deferred, not abandoned
Two paths to add it back later:
Either makes a follow-up PR that adds
linux/arm64back to the platforms lines a one-line change. No production ProcessGit deployment in scope today runs arm64, so this is safe to defer.Recovery procedure for v0.1.0
After merge:
v0.1.0tag (the failed workflow was against the oldrelease.ymlon that tag)v0.1.0against the newmainHEAD (post-merge of this PR)I can do both via the GitHub API once this PR merges — just ping me.
Validation
python3 -c 'yaml.safe_load')Diff stat