From 332eab5060b6c37faebd59ac34546a3db98ce05c Mon Sep 17 00:00:00 2001 From: Rihards Gailums Date: Sat, 23 May 2026 18:01:19 +0000 Subject: [PATCH] ci: drop arm64 from release builds, opt into Node 24, bump timeout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .github/workflows/release.yml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c214b14..eceec68 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,11 +30,18 @@ concurrency: group: release-${{ github.ref }} cancel-in-progress: false +# Opt into Node 24 for JavaScript-based actions ahead of GitHub's June 2026 +# default switch. Suppresses the deprecation warning emitted for actions +# that still ship Node 20 bindings (setup-go, docker/*, etc.). When the +# default flips in June 2026 this line becomes a no-op and can be removed. +env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" + jobs: release: name: Build, sign, publish runs-on: ubuntu-24.04 - timeout-minutes: 60 + timeout-minutes: 90 steps: - name: Checkout @@ -108,7 +115,7 @@ jobs: with: context: . file: deploy/Dockerfile.processgit - platforms: linux/amd64,linux/arm64 + platforms: linux/amd64 push: ${{ github.event_name == 'push' || inputs.dry_run == false }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} @@ -184,7 +191,7 @@ jobs: with: context: updater file: updater/Dockerfile - platforms: linux/amd64,linux/arm64 + platforms: linux/amd64 push: ${{ github.event_name == 'push' || inputs.dry_run == false }} tags: ${{ steps.meta_updater.outputs.tags }} labels: ${{ steps.meta_updater.outputs.labels }} @@ -251,7 +258,7 @@ jobs: IMAGE_REGISTRY: ghcr.io IMAGE_REPOSITORY: algomation-ai/processgit IMAGE_DIGEST: ${{ steps.build.outputs.digest }} - IMAGE_PLATFORMS: linux/amd64,linux/arm64 + IMAGE_PLATFORMS: linux/amd64 SIGNING_ISSUER: https://token.actions.githubusercontent.com SIGNING_IDENTITY_REGEX: '^https://github.com/Algomation-AI/ProcessGit/\.github/workflows/release\.yml@.*' RELEASE_NOTES_URL: https://github.com/${{ github.repository }}/releases/tag/${{ steps.version.outputs.tag }}