From 9b9f697cf89e8cbe8b2527a808d3ede08a799b83 Mon Sep 17 00:00:00 2001 From: florentianayuwono Date: Mon, 1 Jun 2026 14:59:08 +0700 Subject: [PATCH 1/7] feat: add runner-sdk8-arm.patch with Node.js 22 armv7l support Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- patches/runner-sdk8-arm.patch | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 patches/runner-sdk8-arm.patch diff --git a/patches/runner-sdk8-arm.patch b/patches/runner-sdk8-arm.patch new file mode 100644 index 00000000000..dcbad60183e --- /dev/null +++ b/patches/runner-sdk8-arm.patch @@ -0,0 +1,19 @@ +diff --git a/src/Misc/externals.sh b/src/Misc/externals.sh +index 0e08e65..5a69a2f 100755 +--- a/src/Misc/externals.sh ++++ b/src/Misc/externals.sh +@@ -7,6 +7,7 @@ NODE_ALPINE_URL=https://github.com/actions/alpine_nodejs/releases/download + # When you update Node versions you must also create a new release of alpine_nodejs at that updated version. + # Follow the instructions here: https://github.com/actions/alpine_nodejs?tab=readme-ov-file#getting-started + NODE20_VERSION="20.20.2" ++NODE22_VERSION="22.22.3" + NODE24_VERSION="24.15.0" + + get_abs_path() { +@@ -186,4 +187,5 @@ fi + + if [[ "$PACKAGERUNTIME" == "linux-arm" ]]; then + acquireExternalTool "$NODE_URL/v${NODE20_VERSION}/node-v${NODE20_VERSION}-linux-armv7l.tar.gz" node20 fix_nested_dir ++ acquireExternalTool "$NODE_URL/v${NODE22_VERSION}/node-v${NODE22_VERSION}-linux-armv7l.tar.gz" node22 fix_nested_dir + fi +# From upstream release: v2.334.0 From f4e89a02d139fea1b3d445223dbcfb6ce45033e3 Mon Sep 17 00:00:00 2001 From: florentianayuwono Date: Mon, 1 Jun 2026 18:57:48 +0700 Subject: [PATCH 2/7] feat: add runner-main-sdk8-arm.patch for main-branch tracking Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- patches/runner-main-sdk8-arm.patch | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 patches/runner-main-sdk8-arm.patch diff --git a/patches/runner-main-sdk8-arm.patch b/patches/runner-main-sdk8-arm.patch new file mode 100644 index 00000000000..3e3652ef868 --- /dev/null +++ b/patches/runner-main-sdk8-arm.patch @@ -0,0 +1,19 @@ +diff --git a/src/Misc/externals.sh b/src/Misc/externals.sh +index 4330017..b014d47 100755 +--- a/src/Misc/externals.sh ++++ b/src/Misc/externals.sh +@@ -7,6 +7,7 @@ NODE_ALPINE_URL=https://github.com/actions/alpine_nodejs/releases/download + # When you update Node versions you must also create a new release of alpine_nodejs at that updated version. + # Follow the instructions here: https://github.com/actions/alpine_nodejs?tab=readme-ov-file#getting-started + NODE20_VERSION="20.20.2" ++NODE22_VERSION="22.22.3" + NODE24_VERSION="24.16.0" + + get_abs_path() { +@@ -186,4 +187,5 @@ fi + + if [[ "$PACKAGERUNTIME" == "linux-arm" ]]; then + acquireExternalTool "$NODE_URL/v${NODE20_VERSION}/node-v${NODE20_VERSION}-linux-armv7l.tar.gz" node20 fix_nested_dir ++ acquireExternalTool "$NODE_URL/v${NODE22_VERSION}/node-v${NODE22_VERSION}-linux-armv7l.tar.gz" node22 fix_nested_dir + fi +# From upstream commit: c6a124e18496a6e5d2357415052d1799afc64b63 From ae334c9821e5530c8ec6b1ccfd672fa15fd666c3 Mon Sep 17 00:00:00 2001 From: florentianayuwono Date: Mon, 1 Jun 2026 18:58:39 +0700 Subject: [PATCH 3/7] feat: add linux-arm to release.yml build matrix Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/release.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 351ad54d09e..7889542c365 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -54,9 +54,10 @@ jobs: linux-arm64-sha: ${{ steps.sha.outputs.linux-arm64-sha256 }} linux-s390x-sha: ${{ steps.sha.outputs.linux-s390x-sha256 }} linux-ppc64le-sha: ${{ steps.sha.outputs.linux-ppc64le-sha256 }} + linux-arm-sha: ${{ steps.sha.outputs.linux-arm-sha256 }} strategy: matrix: - runtime: [ linux-s390x, linux-ppc64le, linux-x64, linux-arm64 ] + runtime: [ linux-s390x, linux-ppc64le, linux-x64, linux-arm64, linux-arm ] include: - runtime: linux-s390x runs_on: s390x @@ -72,6 +73,10 @@ jobs: - runtime: linux-arm64 runs_on: arm64 + - runtime: linux-arm + runs_on: arm + patch_tag: arm + runs-on: [ self-hosted, noble, "${{ matrix.runs_on }}" ] steps: - uses: actions/checkout@v4 @@ -80,7 +85,7 @@ jobs: run: sudo apt-get update && sudo apt-get install -y dotnet-sdk-8.0 - name: Apply patches - if: matrix.runtime == 'linux-s390x' || matrix.runtime == 'linux-ppc64le' + if: matrix.runtime == 'linux-s390x' || matrix.runtime == 'linux-ppc64le' || matrix.runtime == 'linux-arm' run: | git apply patches/runner-sdk8-${{ matrix.patch_tag }}.patch From 4df9b9d80f42689e2222405d7a539ecda02d59ac Mon Sep 17 00:00:00 2001 From: florentianayuwono Date: Mon, 1 Jun 2026 18:59:30 +0700 Subject: [PATCH 4/7] feat: add linux-arm to release.yml release job Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/release.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7889542c365..a60d50d08a0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -166,6 +166,12 @@ jobs: name: runner-packages-linux-s390x path: ./ + - name: Download Artifact (linux-arm) + uses: actions/download-artifact@v4 + with: + name: runner-packages-linux-arm + path: ./ + # Create ReleaseNote file - name: Create ReleaseNote id: releaseNote @@ -180,6 +186,7 @@ jobs: releaseNote = releaseNote.replace(//g, '${{needs.build.outputs.linux-arm64-sha}}') releaseNote = releaseNote.replace(//g, '${{needs.build.outputs.linux-ppc64le-sha}}') releaseNote = releaseNote.replace(//g, '${{needs.build.outputs.linux-s390x-sha}}') + releaseNote = releaseNote.replace(//g, '${{needs.build.outputs.linux-arm-sha}}') console.log(releaseNote) core.setOutput('version', runnerVersion); core.setOutput('note', releaseNote); @@ -191,6 +198,7 @@ jobs: echo "${{needs.build.outputs.linux-arm64-sha}} actions-runner-linux-arm64-${{ steps.releaseNote.outputs.version }}.tar.gz" | shasum -a 256 -c echo "${{needs.build.outputs.linux-ppc64le-sha}} actions-runner-linux-ppc64le-${{ steps.releaseNote.outputs.version }}.tar.gz" | shasum -a 256 -c echo "${{needs.build.outputs.linux-s390x-sha}} actions-runner-linux-s390x-${{ steps.releaseNote.outputs.version }}.tar.gz" | shasum -a 256 -c + echo "${{needs.build.outputs.linux-arm-sha}} actions-runner-linux-arm-${{ steps.releaseNote.outputs.version }}.tar.gz" | shasum -a 256 -c # Create GitHub release - uses: actions/create-release@master @@ -244,6 +252,16 @@ jobs: asset_name: actions-runner-linux-s390x-${{ steps.releaseNote.outputs.version }}.tar.gz asset_content_type: application/octet-stream + - name: Upload Release Asset (linux-arm) + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.createRelease.outputs.upload_url }} + asset_path: ${{ github.workspace }}/actions-runner-linux-arm-${{ steps.releaseNote.outputs.version }}.tar.gz + asset_name: actions-runner-linux-arm-${{ steps.releaseNote.outputs.version }}.tar.gz + asset_content_type: application/octet-stream + - uses: mattermost/action-mattermost-notify@master if: ${{ failure() }} with: From 9bdd4ec5e085defeb43b3eb7ec95904affa2d7c2 Mon Sep 17 00:00:00 2001 From: florentianayuwono Date: Mon, 1 Jun 2026 18:59:59 +0700 Subject: [PATCH 5/7] feat: add arm to patch update workflow arch loops Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/patch_update_main.yml | 2 +- .github/workflows/patch_update_release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/patch_update_main.yml b/.github/workflows/patch_update_main.yml index 179e95a659b..92a8e4dd40b 100644 --- a/.github/workflows/patch_update_main.yml +++ b/.github/workflows/patch_update_main.yml @@ -70,7 +70,7 @@ jobs: mkdir -p patches touch successful_arches.txt - for arch in ppc64le s390x; do + for arch in ppc64le s390x arm; do echo "Processing $arch..." cd upstream-runner diff --git a/.github/workflows/patch_update_release.yml b/.github/workflows/patch_update_release.yml index 4be6088aad5..39893391042 100644 --- a/.github/workflows/patch_update_release.yml +++ b/.github/workflows/patch_update_release.yml @@ -64,7 +64,7 @@ jobs: mkdir -p patches touch successful_arches.txt - for arch in ppc64le s390x; do + for arch in ppc64le s390x arm; do echo "Processing $arch..." cd upstream-runner From 521782a06addf1b390e2f34ad1112ccf1e30b090 Mon Sep 17 00:00:00 2001 From: florentianayuwono Date: Mon, 1 Jun 2026 19:00:10 +0700 Subject: [PATCH 6/7] docs: add armhf runners implementation plan Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 411fe4011a5..4169f8ab03b 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,4 @@ TestResults TestLogs .DS_Store .mono -**/*.DotSettings.user \ No newline at end of file +**/*.DotSettings.userdocs/superpowers/ From f756608225aa63921228630568095a95c2547c0f Mon Sep 17 00:00:00 2001 From: florentianayuwono Date: Tue, 2 Jun 2026 01:22:20 +0700 Subject: [PATCH 7/7] restore gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 4169f8ab03b..6bcce9d3ea9 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,4 @@ TestResults TestLogs .DS_Store .mono -**/*.DotSettings.userdocs/superpowers/ +**/*.DotSettings.user