Skip to content

feat: add armhf (linux-arm) self-hosted runner support [ISD-5856]#155

Draft
florentianayuwono wants to merge 7 commits into
mainfrom
feat/armhf-runners-isd-5856
Draft

feat: add armhf (linux-arm) self-hosted runner support [ISD-5856]#155
florentianayuwono wants to merge 7 commits into
mainfrom
feat/armhf-runners-isd-5856

Conversation

@florentianayuwono
Copy link
Copy Markdown

Problem

The canonical GitHub Actions runner fork only builds for linux-x64, linux-arm64, linux-ppc64le, and linux-s390x. There is no linux-arm (ARMv7 32-bit / armhf) build, so armhf self-hosted runners cannot be provisioned from this fork.

Solution

Add linux-arm as a supported build target. The upstream actions/runner already has most arm32 infrastructure in place (architecture enum, build defines, dev.sh mappings). The only gap is Node.js 22 for armv7l — Node.js 24 dropped armv7l support, so arm runners need Node.js 22 LTS (supported until April 2027) alongside Node.js 20.

Changes

New patch files:

  • patches/runner-sdk8-arm.patch — adds NODE22_VERSION="22.22.3" and downloads the Node.js 22 armv7l binary in the existing linux-arm block of externals.sh. Verified to apply cleanly against upstream v2.334.0.
  • patches/runner-main-sdk8-arm.patch — same diff targeting upstream main HEAD (c6a124e1). Verified to apply cleanly.

.github/workflows/release.yml:

  • Add linux-arm to the build matrix with runs_on: arm and patch_tag: arm
  • Add linux-arm-sha as a job output
  • Include linux-arm in the Apply patches step condition
  • Download runner-packages-linux-arm artifact in the release job
  • Replace <LINUX_ARM_SHA> in the release note
  • Validate SHA256 for the linux-arm package
  • Upload actions-runner-linux-arm-<version>.tar.gz as a release asset

.github/workflows/patch_update_release.yml and patch_update_main.yml:

  • Add arm to the for arch in ppc64le s390x loop

Notes

  • Self-updater is not disabled — GitHub publishes official arm32 packages (unlike ppc64le/s390x)
  • RISC-V (riscv64) is out of scope per ISD281 spec
  • Spec: ISD281 (approved 22 May 2026)

Test plan

  • Trigger the release workflow on an arm self-hosted runner — verify actions-runner-linux-arm-<version>.tar.gz is produced
  • Confirm Node.js 20 and Node.js 22 armv7l binaries are present in _layout/externals/node20 and _layout/externals/node22
  • Verify patch auto-update workflows process arm on next upstream release

florentianayuwono and others added 6 commits June 1, 2026 14:59
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@florentianayuwono florentianayuwono force-pushed the feat/armhf-runners-isd-5856 branch from d8d8bf7 to 521782a Compare June 1, 2026 18:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant