Skip to content

ci: drop arm64 from release builds, opt into Node 24, bump timeout#132

Merged
rg4444 merged 1 commit into
mainfrom
fix/release-amd64-only-and-node24
May 23, 2026
Merged

ci: drop arm64 from release builds, opt into Node 24, bump timeout#132
rg4444 merged 1 commit into
mainfrom
fix/release-amd64-only-and-node24

Conversation

@rg4444
Copy link
Copy Markdown
Contributor

@rg4444 rg4444 commented May 23, 2026

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)

  1. Main image platforms: linux/amd64,linux/arm64linux/amd64
  2. Updater image platforms: same change (PR ci: build & sign processgit-updater image paired with the main image #129 mirrored arm64 to the updater build; same problem)
  3. release.json IMAGE_PLATFORMS env: linux/amd64 (so the published manifest accurately reflects what was built — important for any updater logic that checks platform compatibility)
  4. timeout-minutes: 60 → 90 (cushion; amd64 alone shouldn't come close)

Plus a small future-proofing:

  1. Workflow-level 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:

  • Native arm64 hosted runner (GitHub-paid plans, no QEMU → amd64-comparable wall clock)
  • Self-hosted arm64 runner

Either makes a follow-up PR that adds linux/arm64 back 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:

  1. Delete the existing v0.1.0 tag (the failed workflow was against the old release.yml on that tag)
  2. Re-tag v0.1.0 against the new main HEAD (post-merge of this PR)
  3. Workflow re-runs; expected wall clock ~10–15 min for amd64-only

I can do both via the GitHub API once this PR merges — just ping me.

Validation

  • YAML syntax valid (python3 -c 'yaml.safe_load')
  • Diff is minimal and surgical: 11 insertions, 4 deletions across the 5 changes above
  • No structural changes to job ordering, signing, release-creation, or summary steps

Diff stat

 .github/workflows/release.yml | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

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>
@rg4444 rg4444 merged commit d6b89cf into main May 23, 2026
8 of 23 checks passed
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant