From 771f0489a285ce2c104599f983c92ade69401f4d Mon Sep 17 00:00:00 2001 From: heni02 Date: Thu, 11 Jun 2026 17:20:07 +0800 Subject: [PATCH 01/14] ci: migrate non-distributed runners to Shanghai ARM64 nodes Replace amd64/ubuntu self-hosted runners with arm64-mo-shanghai-4c8g for light jobs and arm64-mo-shanghai-8c16g for heavy compile/test work. Keep TKE distributed regression and Docker-dependent compose jobs on amd64. Co-authored-by: Cursor --- .github/workflows/check-action-file.yaml | 2 +- .github/workflows/ci.yaml | 8 ++++---- .github/workflows/e2e-compose.yaml | 4 ++-- .github/workflows/e2e-standalone.yaml | 6 +++--- .github/workflows/e2e-upgrade.yaml | 4 ++-- .github/workflows/merge-trigger-standalone.yaml | 4 ++-- .github/workflows/merge-update-moc.yaml | 2 +- .github/workflows/release.yaml | 2 +- .github/workflows/robot.yaml | 14 +++++++------- .github/workflows/utils.yaml | 8 ++++---- 10 files changed, 27 insertions(+), 27 deletions(-) diff --git a/.github/workflows/check-action-file.yaml b/.github/workflows/check-action-file.yaml index 208d00b..0e4c67f 100644 --- a/.github/workflows/check-action-file.yaml +++ b/.github/workflows/check-action-file.yaml @@ -16,7 +16,7 @@ jobs: name: Validate GitHub Actions workflows permissions: contents: read - runs-on: ubuntu-22.04 + runs-on: arm64-mo-shanghai-4c8g steps: - uses: actions/checkout@v6 - name: Check for any changed workflows diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 6a72b87..b5eb5e3 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -41,8 +41,8 @@ on: jobs: ut-linux-x86: environment: ci - runs-on: ${{ vars.UT_RUNNER_LABEL || 'ubuntu-22.04' }} - name: UT Test on Ubuntu/x86 + runs-on: ${{ vars.UT_RUNNER_LABEL || 'arm64-mo-shanghai-8c16g' }} + name: UT Test on Linux/arm64 steps: - name: Pre Clean Some Unneeded Images run: | @@ -197,8 +197,8 @@ jobs: sca: environment: ci - runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} - name: SCA Test on Ubuntu/x86 + runs-on: ${{ vars.SCA_RUNNER_LABEL || 'arm64-mo-shanghai-4c8g' }} + name: SCA Test on Linux/arm64 steps: - uses: actions/checkout@v6 with: diff --git a/.github/workflows/e2e-compose.yaml b/.github/workflows/e2e-compose.yaml index 3761810..b602610 100644 --- a/.github/workflows/e2e-compose.yaml +++ b/.github/workflows/e2e-compose.yaml @@ -11,7 +11,7 @@ jobs: bvt-docker-compose-push: if: ${{ !github.event.pull_request.draft }} environment: ci - runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} + runs-on: ${{ vars.COMPOSE_RUNNER_LABEL || 'amd64-mo-guangzhou-2xlarge16' }} name: multi cn e2e bvt test docker compose(Optimistic/PUSH) timeout-minutes: 60 @@ -183,7 +183,7 @@ jobs: multi-CN-bvt-docker-compose-pessimistic: if: ${{ !github.event.pull_request.draft }} environment: ci - runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} + runs-on: ${{ vars.COMPOSE_RUNNER_LABEL || 'amd64-mo-guangzhou-2xlarge16' }} name: multi cn e2e bvt test docker compose(PESSIMISTIC) timeout-minutes: 60 steps: diff --git a/.github/workflows/e2e-standalone.yaml b/.github/workflows/e2e-standalone.yaml index e56fa59..bd1d016 100644 --- a/.github/workflows/e2e-standalone.yaml +++ b/.github/workflows/e2e-standalone.yaml @@ -11,7 +11,7 @@ jobs: bvt-linux-x86: if: ${{ !github.event.pull_request.draft }} environment: ci - runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} + runs-on: ${{ vars.RUNNER_LABEL || 'arm64-mo-shanghai-8c16g' }} name: e2e BVT Test on Linux/x64(LAUNCH,Optimistic) timeout-minutes: 90 steps: @@ -145,7 +145,7 @@ jobs: retention-days: 7 multi-cn-proxy-bvt-linux-x86: - runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} + runs-on: ${{ vars.RUNNER_LABEL || 'arm64-mo-shanghai-8c16g' }} name: Multi-CN e2e BVT Test on Linux/x64(LAUNCH, PROXY) timeout-minutes: 60 env: @@ -234,7 +234,7 @@ jobs: retention-days: 7 pessimistic-bvt-linux-x86: - runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} + runs-on: ${{ vars.RUNNER_LABEL || 'arm64-mo-shanghai-8c16g' }} name: e2e BVT Test on Linux/x64(LAUNCH, PESSIMISTIC) timeout-minutes: 60 env: diff --git a/.github/workflows/e2e-upgrade.yaml b/.github/workflows/e2e-upgrade.yaml index 40d2108..21f7bb7 100644 --- a/.github/workflows/e2e-upgrade.yaml +++ b/.github/workflows/e2e-upgrade.yaml @@ -19,7 +19,7 @@ env: jobs: upgrade-ci-target-linux-amd64: environment: ci - runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} + runs-on: ${{ vars.RUNNER_LABEL || 'arm64-mo-shanghai-8c16g' }} name: Compatibility Test With Target on Linux/x64(LAUNCH) timeout-minutes: 80 @@ -225,7 +225,7 @@ jobs: upgrade-ci-release-linux-amd64: environment: ci - runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} + runs-on: ${{ vars.RUNNER_LABEL || 'arm64-mo-shanghai-8c16g' }} name: Compatibility Test With Release on Linux/x64(LAUNCH) timeout-minutes: 80 outputs: diff --git a/.github/workflows/merge-trigger-standalone.yaml b/.github/workflows/merge-trigger-standalone.yaml index 71ae199..edab8c1 100644 --- a/.github/workflows/merge-trigger-standalone.yaml +++ b/.github/workflows/merge-trigger-standalone.yaml @@ -128,9 +128,9 @@ jobs: multi-cn-bvt-race-linux-x86: if: ${{ github.event.pull_request.merged == true && always() }} environment: ci - runs-on: amd64-mo-guangzhou-2xlarge32 + runs-on: arm64-mo-shanghai-8c16g needs: [pessimistic-bvt-darwin-arm64] - name: Multi-CN e2e BVT(Race) Test on Linux/x64 + name: Multi-CN e2e BVT(Race) Test on Linux/arm64 env: mo_reuse_enable_checker: true steps: diff --git a/.github/workflows/merge-update-moc.yaml b/.github/workflows/merge-update-moc.yaml index 043f445..b8beb2c 100644 --- a/.github/workflows/merge-update-moc.yaml +++ b/.github/workflows/merge-update-moc.yaml @@ -22,7 +22,7 @@ jobs: Update_MOC: name: Update MOC environment: ci - runs-on: ubuntu-latest + runs-on: arm64-mo-shanghai-4c8g steps: - name: Update MOC Data uses: matrixorigin/CI/actions/check-coverage@main diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index de4ed5f..87c1d04 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -99,7 +99,7 @@ jobs: linux-arm64-build-job: environment: ci - runs-on: arm64-mo-guangzhou-2xlarge16 + runs-on: arm64-mo-shanghai-8c16g steps: - name: Checkout source uses: actions/checkout@v6 diff --git a/.github/workflows/robot.yaml b/.github/workflows/robot.yaml index 257b1c1..4c95c0d 100644 --- a/.github/workflows/robot.yaml +++ b/.github/workflows/robot.yaml @@ -19,7 +19,7 @@ jobs: issue-notify: if: github.event_name == 'issues' && github.event.action == 'assigned' environment: ci - runs-on: ubuntu-22.04 + runs-on: arm64-mo-shanghai-4c8g steps: - name: ISSUE Triggered uses: chf007/action-wechat-work@master @@ -34,7 +34,7 @@ jobs: check-bvt-issue: if: github.event_name == 'issues' && github.event.action == 'closed' environment: ci - runs-on: ubuntu-22.04 + runs-on: arm64-mo-shanghai-4c8g steps: - name: CheckOut uses: actions/checkout@v6 @@ -73,7 +73,7 @@ jobs: issue-reopen: environment: ci - runs-on: ubuntu-22.04 + runs-on: arm64-mo-shanghai-4c8g if: github.event_name == 'issues' && github.event.action == 'closed' steps: - name: Reopen Issue @@ -86,7 +86,7 @@ jobs: issue_close_check: environment: ci - runs-on: ubuntu-22.04 + runs-on: arm64-mo-shanghai-4c8g if: github.event_name == 'issues' && github.event.action == 'closed' steps: - uses: guguducken/pull-issue-reviewer@issue_close_check_with_name @@ -100,7 +100,7 @@ jobs: nightly-check: if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }} environment: ci - runs-on: amd64-mo-shanghai-4xlarge32 + runs-on: arm64-mo-shanghai-8c16g steps: - uses: actions/checkout@v6 with: @@ -293,7 +293,7 @@ jobs: issue-rm-labels: environment: ci - runs-on: ubuntu-latest + runs-on: arm64-mo-shanghai-4c8g if: ${{ github.event_name == 'issues' && github.event.action == 'assigned' }} steps: - name: Remove Labels @@ -311,7 +311,7 @@ jobs: reopen-without-PR: environment: ci - runs-on: ubuntu-latest + runs-on: arm64-mo-shanghai-4c8g if: ${{ github.event_name == 'issues' && github.event.action == 'closed' && github.actor != 'sukki37' && github.actor != 'Ariznawlll' }} steps: - name: Reopen Issue Without PR diff --git a/.github/workflows/utils.yaml b/.github/workflows/utils.yaml index 207cd36..10cace7 100644 --- a/.github/workflows/utils.yaml +++ b/.github/workflows/utils.yaml @@ -44,7 +44,7 @@ on: jobs: check_organization_user: environment: ci - runs-on: ubuntu-22.04 + runs-on: arm64-mo-shanghai-4c8g outputs: in_org: ${{ steps.check_in_org.outputs.in_org }} safe_label: ${{ steps.check_safe_label.outputs.safe_label }} @@ -94,7 +94,7 @@ jobs: needs: [check_organization_user] environment: ci # if you change runner, must modify L117 - runs-on: amd64-mo-guangzhou-2xlarge16 + runs-on: arm64-mo-shanghai-8c16g steps: - uses: actions/checkout@v6 with: @@ -389,7 +389,7 @@ jobs: pr-size-label: environment: ci - runs-on: ubuntu-22.04 + runs-on: arm64-mo-shanghai-4c8g needs: [check_organization_user] steps: - name: size-label @@ -413,7 +413,7 @@ jobs: needs: - check_organization_user environment: ci - runs-on: amd64-mo-guangzhou-2xlarge16 + runs-on: arm64-mo-shanghai-8c16g steps: - uses: actions/checkout@v6 with: From ffc0aa6c6ceb06eeb0a802b6256072bc1145252d Mon Sep 17 00:00:00 2001 From: heni02 Date: Thu, 11 Jun 2026 17:52:04 +0800 Subject: [PATCH 02/14] fix(setup-cmake): download arm64 cmake and ninja on aarch64 runners setup-cmake previously always fetched Linux-x86_64 CMake, which breaks make build/thirdparties on arm64-mo-shanghai runners. Co-authored-by: Cursor --- actions/setup-cmake/dist/index.js | 48 ++++++++++++++++++++++++++++--- actions/setup-cmake/src/cmake.ts | 37 +++++++++++++++++++++--- actions/setup-cmake/src/ninja.ts | 16 +++++++++++ 3 files changed, 93 insertions(+), 8 deletions(-) diff --git a/actions/setup-cmake/dist/index.js b/actions/setup-cmake/dist/index.js index 66d71cc..a635959 100644 --- a/actions/setup-cmake/dist/index.js +++ b/actions/setup-cmake/dist/index.js @@ -1525,6 +1525,20 @@ function ninja() { required: true }); const platform = getPlatform(core.getInput('platform')); + if (platform === 'linux' && process.arch === 'arm64') { + yield core.group('Install ninja-build via apt on linux/arm64', () => __awaiter(this, void 0, void 0, function* () { + const child_process_1 = __webpack_require__(129); + const runCommand = (command, args) => { + const result = child_process_1.spawnSync(command, args, { stdio: 'inherit' }); + if (result.status !== 0) { + throw new Error(`Command failed: ${command} ${args.join(' ')}`); + } + }; + runCommand('sudo', ['apt-get', 'update', '-qq']); + runCommand('sudo', ['apt-get', 'install', '-y', 'ninja-build']); + })); + return 'ninja'; + } const url = `https://github.com/ninja-build/ninja/releases/download/v${version}/ninja-${platform}.zip`; // Get an unique output directory name from the URL. const key = hashCode(url); @@ -4776,6 +4790,28 @@ function getOutputPath(subDir) { } return path.join(process.env.RUNNER_TEMP, subDir); } +function getCMakeArch(platformStr) { + const arch = process.arch; + if (platformStr === 'linux') { + if (arch === 'arm64') { + return 'aarch64'; + } + if (arch === 'x64') { + return 'x86_64'; + } + throw new Error(`Unsupported linux arch '${arch}'`); + } + if (platformStr === 'mac' || platformStr === 'darwin') { + if (arch === 'arm64') { + return 'arm64'; + } + if (arch === 'x64') { + return 'x86_64'; + } + throw new Error(`Unsupported darwin arch '${arch}'`); + } + throw new Error(`Unsupported platform '${platformStr}' for arch detection`); +} function getPlatformData(version, platform) { const platformStr = platform || process.platform; switch (platformStr) { @@ -4789,20 +4825,24 @@ function getPlatformData(version, platform) { url: `https://github.com/Kitware/CMake/releases/download/v${version}/cmake-${version}-win64-x64.zip` }; case 'mac': - case 'darwin': + case 'darwin': { + const cmakeArch = getCMakeArch('darwin'); return { binPath: 'CMake.app/Contents/bin/', dropSuffix: '.tar.gz', extractFunction: tools.extractTar, - url: `https://github.com/Kitware/CMake/releases/download/v${version}/cmake-${version}-Darwin-x86_64.tar.gz` + url: `https://github.com/Kitware/CMake/releases/download/v${version}/cmake-${version}-Darwin-${cmakeArch}.tar.gz` }; - case 'linux': + } + case 'linux': { + const cmakeArch = getCMakeArch('linux'); return { binPath: 'bin/', dropSuffix: '.tar.gz', extractFunction: tools.extractTar, - url: `https://github.com/Kitware/CMake/releases/download/v${version}/cmake-${version}-Linux-x86_64.tar.gz` + url: `https://github.com/Kitware/CMake/releases/download/v${version}/cmake-${version}-Linux-${cmakeArch}.tar.gz` }; + } default: throw new Error(`Unsupported platform '${platformStr}'`); } diff --git a/actions/setup-cmake/src/cmake.ts b/actions/setup-cmake/src/cmake.ts index 08698e7..98f79e2 100644 --- a/actions/setup-cmake/src/cmake.ts +++ b/actions/setup-cmake/src/cmake.ts @@ -45,6 +45,31 @@ function getOutputPath(subDir: string): string { return path.join(process.env.RUNNER_TEMP, subDir); } +function getCMakeArch(platformStr: string): string { + const arch = process.arch; + if (platformStr === 'linux') { + if (arch === 'arm64') { + return 'aarch64'; + } + if (arch === 'x64') { + return 'x86_64'; + } + throw new Error(`Unsupported linux arch '${arch}'`); + } + + if (platformStr === 'mac' || platformStr === 'darwin') { + if (arch === 'arm64') { + return 'arm64'; + } + if (arch === 'x64') { + return 'x86_64'; + } + throw new Error(`Unsupported darwin arch '${arch}'`); + } + + throw new Error(`Unsupported platform '${platformStr}' for arch detection`); +} + function getPlatformData(version: string, platform?: string): PackageInfo { const platformStr = platform || process.platform; switch (platformStr) { @@ -58,20 +83,24 @@ function getPlatformData(version: string, platform?: string): PackageInfo { url: `https://github.com/Kitware/CMake/releases/download/v${version}/cmake-${version}-win64-x64.zip` }; case 'mac': - case 'darwin': + case 'darwin': { + const cmakeArch = getCMakeArch('darwin'); return { binPath: 'CMake.app/Contents/bin/', dropSuffix: '.tar.gz', extractFunction: tools.extractTar, - url: `https://github.com/Kitware/CMake/releases/download/v${version}/cmake-${version}-Darwin-x86_64.tar.gz` + url: `https://github.com/Kitware/CMake/releases/download/v${version}/cmake-${version}-Darwin-${cmakeArch}.tar.gz` }; - case 'linux': + } + case 'linux': { + const cmakeArch = getCMakeArch('linux'); return { binPath: 'bin/', dropSuffix: '.tar.gz', extractFunction: tools.extractTar, - url: `https://github.com/Kitware/CMake/releases/download/v${version}/cmake-${version}-Linux-x86_64.tar.gz` + url: `https://github.com/Kitware/CMake/releases/download/v${version}/cmake-${version}-Linux-${cmakeArch}.tar.gz` }; + } default: throw new Error(`Unsupported platform '${platformStr}'`); } diff --git a/actions/setup-cmake/src/ninja.ts b/actions/setup-cmake/src/ninja.ts index 65c693c..0cb6123 100644 --- a/actions/setup-cmake/src/ninja.ts +++ b/actions/setup-cmake/src/ninja.ts @@ -5,10 +5,18 @@ * Copyright (c) 2020 Luca Cappa. */ import * as core from '@actions/core'; +import { spawnSync } from 'child_process'; import * as fs from 'fs'; import * as path from 'path'; import * as tools from '@actions/tool-cache'; +function runCommand(command: string, args: string[]): void { + const result = spawnSync(command, args, { stdio: 'inherit' }); + if (result.status !== 0) { + throw new Error(`Command failed: ${command} ${args.join(' ')}`); + } +} + /** * Compute an unique number given some text. * @param {string} text @@ -59,6 +67,14 @@ export async function ninja(): Promise { const platform = getPlatform(core.getInput('platform')); + if (platform === 'linux' && process.arch === 'arm64') { + await core.group('Install ninja-build via apt on linux/arm64', async () => { + runCommand('sudo', ['apt-get', 'update', '-qq']); + runCommand('sudo', ['apt-get', 'install', '-y', 'ninja-build']); + }); + return 'ninja'; + } + const url = `https://github.com/ninja-build/ninja/releases/download/v${version}/ninja-${platform}.zip`; // Get an unique output directory name from the URL. From bd876237afc48db731eff55d5450e1f5578074a2 Mon Sep 17 00:00:00 2001 From: heni02 Date: Thu, 11 Jun 2026 17:52:32 +0800 Subject: [PATCH 03/14] fix(setup-env): use repo-local setup-cmake for arch-aware installs Avoid pinning setup-cmake to @main so ARM runner fixes ship with the same CI ref used by setup-env. Co-authored-by: Cursor --- actions/setup-env/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/setup-env/action.yaml b/actions/setup-env/action.yaml index 2324bdb..e9eadae 100644 --- a/actions/setup-env/action.yaml +++ b/actions/setup-env/action.yaml @@ -43,4 +43,4 @@ runs: distribution: ${{ inputs.java-distribution}} - name: Setup CMake if: ${{ inputs.setup-cmake == 'true' }} - uses: matrixorigin/CI/actions/setup-cmake@main + uses: ./setup-cmake From 5dd4ad4920512d05041c930285f773382acb2623 Mon Sep 17 00:00:00 2001 From: heni02 Date: Thu, 11 Jun 2026 17:53:07 +0800 Subject: [PATCH 04/14] fix(setup-env): correct relative path to setup-cmake action Co-authored-by: Cursor --- actions/setup-env/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/setup-env/action.yaml b/actions/setup-env/action.yaml index e9eadae..998f0d6 100644 --- a/actions/setup-env/action.yaml +++ b/actions/setup-env/action.yaml @@ -43,4 +43,4 @@ runs: distribution: ${{ inputs.java-distribution}} - name: Setup CMake if: ${{ inputs.setup-cmake == 'true' }} - uses: ./setup-cmake + uses: ../setup-cmake From 6dd610faacf8c95f1434cfe9e60abe3a7c2b2f60 Mon Sep 17 00:00:00 2001 From: heni02 Date: Thu, 11 Jun 2026 18:02:07 +0800 Subject: [PATCH 05/14] fix(setup-env): use full action ref for setup-cmake on ARM branch Composite actions cannot reference sibling actions via relative paths. Co-authored-by: Cursor --- actions/setup-env/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/setup-env/action.yaml b/actions/setup-env/action.yaml index 998f0d6..b5b5337 100644 --- a/actions/setup-env/action.yaml +++ b/actions/setup-env/action.yaml @@ -43,4 +43,4 @@ runs: distribution: ${{ inputs.java-distribution}} - name: Setup CMake if: ${{ inputs.setup-cmake == 'true' }} - uses: ../setup-cmake + uses: matrixorigin/CI/actions/setup-cmake@alter_runner_arm From 979e6d9a34c28bb5f9b91633b6b8171d43757d38 Mon Sep 17 00:00:00 2001 From: heni02 Date: Thu, 11 Jun 2026 18:05:14 +0800 Subject: [PATCH 06/14] fix(setup-cmake): use cmake 3.22.6 on linux/arm64 when 3.17 is requested Kitware does not publish Linux-aarch64 binaries for CMake 3.17.2, which caused 404 errors on arm64 runners. Co-authored-by: Cursor --- actions/setup-cmake/dist/index.js | 18 +++++++++++++++--- actions/setup-cmake/src/cmake.ts | 27 +++++++++++++++++++++++---- 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/actions/setup-cmake/dist/index.js b/actions/setup-cmake/dist/index.js index a635959..2e584c9 100644 --- a/actions/setup-cmake/dist/index.js +++ b/actions/setup-cmake/dist/index.js @@ -4847,12 +4847,24 @@ function getPlatformData(version, platform) { throw new Error(`Unsupported platform '${platformStr}'`); } } +const MIN_LINUX_AARCH64_CMAKE = '3.22.6'; +function resolveCMakeVersion(version, platform) { + const platformStr = platform || process.platform; + if (platformStr === 'linux' && process.arch === 'arm64') { + const [major, minor] = version.split('.').map(Number); + if (major < 3 || (major === 3 && minor < 19)) { + core.info(`CMake ${version} has no Linux-aarch64 prebuilt binary, using ${MIN_LINUX_AARCH64_CMAKE} instead`); + return MIN_LINUX_AARCH64_CMAKE; + } + } + return version; +} function cmake() { return __awaiter(this, void 0, void 0, function* () { - const version = core.getInput('cmake', { - required: true - }); const platform = core.getInput('platform'); + const version = resolveCMakeVersion(core.getInput('cmake', { + required: true + }), platform); const data = getPlatformData(version, platform); // Get an unique output directory name from the URL. const key = hashCode(data.url); diff --git a/actions/setup-cmake/src/cmake.ts b/actions/setup-cmake/src/cmake.ts index 98f79e2..cee634d 100644 --- a/actions/setup-cmake/src/cmake.ts +++ b/actions/setup-cmake/src/cmake.ts @@ -106,12 +106,31 @@ function getPlatformData(version: string, platform?: string): PackageInfo { } } -export async function cmake(): Promise { - const version = core.getInput('cmake', { - required: true - }); +const MIN_LINUX_AARCH64_CMAKE = '3.22.6'; +function resolveCMakeVersion(version: string, platform?: string): string { + const platformStr = platform || process.platform; + if (platformStr === 'linux' && process.arch === 'arm64') { + const [major, minor] = version.split('.').map(Number); + if (major < 3 || (major === 3 && minor < 19)) { + core.info( + `CMake ${version} has no Linux-aarch64 prebuilt binary, using ${MIN_LINUX_AARCH64_CMAKE} instead` + ); + return MIN_LINUX_AARCH64_CMAKE; + } + } + return version; +} + +export async function cmake(): Promise { const platform = core.getInput('platform'); + const version = resolveCMakeVersion( + core.getInput('cmake', { + required: true + }), + platform + ); + const data = getPlatformData(version, platform); // Get an unique output directory name from the URL. From 113c4e64a0ef746bf99fc4d4f4b68a3d9f9e6190 Mon Sep 17 00:00:00 2001 From: heni02 Date: Thu, 11 Jun 2026 18:16:52 +0800 Subject: [PATCH 07/14] fix(sca): run on 8c16g and only build cgo for static-check Full make build exceeds 4c8g runner memory during go link. SCA only needs cgo/thirdparties for lint tools, not the mo-service binary. Co-authored-by: Cursor --- .github/workflows/ci.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b5eb5e3..882c2e5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -197,7 +197,7 @@ jobs: sca: environment: ci - runs-on: ${{ vars.SCA_RUNNER_LABEL || 'arm64-mo-shanghai-4c8g' }} + runs-on: ${{ vars.SCA_RUNNER_LABEL || 'arm64-mo-shanghai-8c16g' }} name: SCA Test on Linux/arm64 steps: - uses: actions/checkout@v6 @@ -214,13 +214,13 @@ jobs: .github/ISSUE_TEMPLATE/*.yml .github/ISSUE_TEMPLATE/*.yaml - name: Set up Go - uses: matrixorigin/CI/actions/setup-env@main + uses: matrixorigin/CI/actions/setup-env@alter_runner_arm with: setup-java: false go-version-file: "${{ github.workspace }}/go.mod" - name: Prepare ENV run: | - cd $GITHUB_WORKSPACE && make clean && make config && make build + cd $GITHUB_WORKSPACE && make clean && make config && make cgo make install-static-check-tools - name: Static Code Analysis run: | From a7985ee6540814f856ab837d2920bb59d55aa052 Mon Sep 17 00:00:00 2001 From: heni02 Date: Thu, 18 Jun 2026 10:25:49 +0800 Subject: [PATCH 08/14] ci: keep race BVT on amd64-mo-guangzhou-2xlarge32 Race detection build is too slow on arm64 8c16g runners; revert merge-trigger standalone race job to the original amd64 runner. Co-authored-by: Cursor --- .github/workflows/merge-trigger-standalone.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/merge-trigger-standalone.yaml b/.github/workflows/merge-trigger-standalone.yaml index edab8c1..71ae199 100644 --- a/.github/workflows/merge-trigger-standalone.yaml +++ b/.github/workflows/merge-trigger-standalone.yaml @@ -128,9 +128,9 @@ jobs: multi-cn-bvt-race-linux-x86: if: ${{ github.event.pull_request.merged == true && always() }} environment: ci - runs-on: arm64-mo-shanghai-8c16g + runs-on: amd64-mo-guangzhou-2xlarge32 needs: [pessimistic-bvt-darwin-arm64] - name: Multi-CN e2e BVT(Race) Test on Linux/arm64 + name: Multi-CN e2e BVT(Race) Test on Linux/x64 env: mo_reuse_enable_checker: true steps: From be5784e0dbf201871ef48e828001f273dea60b54 Mon Sep 17 00:00:00 2001 From: heni02 Date: Thu, 18 Jun 2026 16:03:53 +0800 Subject: [PATCH 09/14] ci: revert UT job to ubuntu-22.04 runner Keep ARM migration for other jobs; UT stays on GitHub hosted x86 until ARM UT failures are resolved. Co-authored-by: Cursor --- .github/workflows/ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 882c2e5..473fa66 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -41,8 +41,8 @@ on: jobs: ut-linux-x86: environment: ci - runs-on: ${{ vars.UT_RUNNER_LABEL || 'arm64-mo-shanghai-8c16g' }} - name: UT Test on Linux/arm64 + runs-on: ${{ vars.UT_RUNNER_LABEL || 'ubuntu-22.04' }} + name: UT Test on Ubuntu/x86 steps: - name: Pre Clean Some Unneeded Images run: | From 073aeeb2ad7c5dc274c366997370cb84abb7e382 Mon Sep 17 00:00:00 2001 From: heni02 Date: Thu, 18 Jun 2026 16:08:10 +0800 Subject: [PATCH 10/14] ci: revert Compose BVT jobs to ubuntu-22.04 runner Keep Optimistic/PUSH and Pessimistic compose BVT on GitHub hosted x86 instead of amd64 self-hosted runner. Co-authored-by: Cursor --- .github/workflows/e2e-compose.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-compose.yaml b/.github/workflows/e2e-compose.yaml index b602610..3761810 100644 --- a/.github/workflows/e2e-compose.yaml +++ b/.github/workflows/e2e-compose.yaml @@ -11,7 +11,7 @@ jobs: bvt-docker-compose-push: if: ${{ !github.event.pull_request.draft }} environment: ci - runs-on: ${{ vars.COMPOSE_RUNNER_LABEL || 'amd64-mo-guangzhou-2xlarge16' }} + runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} name: multi cn e2e bvt test docker compose(Optimistic/PUSH) timeout-minutes: 60 @@ -183,7 +183,7 @@ jobs: multi-CN-bvt-docker-compose-pessimistic: if: ${{ !github.event.pull_request.draft }} environment: ci - runs-on: ${{ vars.COMPOSE_RUNNER_LABEL || 'amd64-mo-guangzhou-2xlarge16' }} + runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} name: multi cn e2e bvt test docker compose(PESSIMISTIC) timeout-minutes: 60 steps: From dd0ebd06b509a28a56c4bc8355e20a082f16625d Mon Sep 17 00:00:00 2001 From: heni02 Date: Wed, 24 Jun 2026 11:30:58 +0800 Subject: [PATCH 11/14] Migrate runner to arm64 --- .github/workflows/e2e-standalone.yaml | 6 +++--- .github/workflows/e2e-upgrade.yaml | 4 ++-- .github/workflows/robot.yaml | 2 +- .github/workflows/utils.yaml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/e2e-standalone.yaml b/.github/workflows/e2e-standalone.yaml index bd1d016..e56fa59 100644 --- a/.github/workflows/e2e-standalone.yaml +++ b/.github/workflows/e2e-standalone.yaml @@ -11,7 +11,7 @@ jobs: bvt-linux-x86: if: ${{ !github.event.pull_request.draft }} environment: ci - runs-on: ${{ vars.RUNNER_LABEL || 'arm64-mo-shanghai-8c16g' }} + runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} name: e2e BVT Test on Linux/x64(LAUNCH,Optimistic) timeout-minutes: 90 steps: @@ -145,7 +145,7 @@ jobs: retention-days: 7 multi-cn-proxy-bvt-linux-x86: - runs-on: ${{ vars.RUNNER_LABEL || 'arm64-mo-shanghai-8c16g' }} + runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} name: Multi-CN e2e BVT Test on Linux/x64(LAUNCH, PROXY) timeout-minutes: 60 env: @@ -234,7 +234,7 @@ jobs: retention-days: 7 pessimistic-bvt-linux-x86: - runs-on: ${{ vars.RUNNER_LABEL || 'arm64-mo-shanghai-8c16g' }} + runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} name: e2e BVT Test on Linux/x64(LAUNCH, PESSIMISTIC) timeout-minutes: 60 env: diff --git a/.github/workflows/e2e-upgrade.yaml b/.github/workflows/e2e-upgrade.yaml index 21f7bb7..40d2108 100644 --- a/.github/workflows/e2e-upgrade.yaml +++ b/.github/workflows/e2e-upgrade.yaml @@ -19,7 +19,7 @@ env: jobs: upgrade-ci-target-linux-amd64: environment: ci - runs-on: ${{ vars.RUNNER_LABEL || 'arm64-mo-shanghai-8c16g' }} + runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} name: Compatibility Test With Target on Linux/x64(LAUNCH) timeout-minutes: 80 @@ -225,7 +225,7 @@ jobs: upgrade-ci-release-linux-amd64: environment: ci - runs-on: ${{ vars.RUNNER_LABEL || 'arm64-mo-shanghai-8c16g' }} + runs-on: ${{ vars.RUNNER_LABEL || 'ubuntu-22.04' }} name: Compatibility Test With Release on Linux/x64(LAUNCH) timeout-minutes: 80 outputs: diff --git a/.github/workflows/robot.yaml b/.github/workflows/robot.yaml index 4c95c0d..44f66cc 100644 --- a/.github/workflows/robot.yaml +++ b/.github/workflows/robot.yaml @@ -100,7 +100,7 @@ jobs: nightly-check: if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }} environment: ci - runs-on: arm64-mo-shanghai-8c16g + runs-on: amd64-mo-shanghai-4xlarge32 steps: - uses: actions/checkout@v6 with: diff --git a/.github/workflows/utils.yaml b/.github/workflows/utils.yaml index 10cace7..16963d9 100644 --- a/.github/workflows/utils.yaml +++ b/.github/workflows/utils.yaml @@ -94,7 +94,7 @@ jobs: needs: [check_organization_user] environment: ci # if you change runner, must modify L117 - runs-on: arm64-mo-shanghai-8c16g + runs-on: amd64-mo-guangzhou-2xlarge16 steps: - uses: actions/checkout@v6 with: @@ -413,7 +413,7 @@ jobs: needs: - check_organization_user environment: ci - runs-on: arm64-mo-shanghai-8c16g + runs-on: amd64-mo-guangzhou-2xlarge16 steps: - uses: actions/checkout@v6 with: From 09374762c8fc2910239244c23fa066df75a581aa Mon Sep 17 00:00:00 2001 From: heni02 Date: Wed, 24 Jun 2026 11:57:26 +0800 Subject: [PATCH 12/14] Migrate runner to arm64 --- .github/workflows/ci.yaml | 2 +- actions/setup-env/action.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 473fa66..70c139e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -214,7 +214,7 @@ jobs: .github/ISSUE_TEMPLATE/*.yml .github/ISSUE_TEMPLATE/*.yaml - name: Set up Go - uses: matrixorigin/CI/actions/setup-env@alter_runner_arm + uses: matrixorigin/CI/actions/setup-env@main with: setup-java: false go-version-file: "${{ github.workspace }}/go.mod" diff --git a/actions/setup-env/action.yaml b/actions/setup-env/action.yaml index b5b5337..2324bdb 100644 --- a/actions/setup-env/action.yaml +++ b/actions/setup-env/action.yaml @@ -43,4 +43,4 @@ runs: distribution: ${{ inputs.java-distribution}} - name: Setup CMake if: ${{ inputs.setup-cmake == 'true' }} - uses: matrixorigin/CI/actions/setup-cmake@alter_runner_arm + uses: matrixorigin/CI/actions/setup-cmake@main From 1196157fb108aba8dcf16c4291fd2b4aa72b4350 Mon Sep 17 00:00:00 2001 From: heni02 Date: Wed, 24 Jun 2026 12:18:42 +0800 Subject: [PATCH 13/14] fix(setup-env): use ARM-aware setup-cmake from alter_runner_arm setup-cmake@main downloads Linux-x86_64 cmake on arm64 runners, breaking thirdparties builds. Wire setup-env to the branch that has aarch64 support. Co-authored-by: Cursor --- actions/setup-env/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/setup-env/action.yaml b/actions/setup-env/action.yaml index 2324bdb..b5b5337 100644 --- a/actions/setup-env/action.yaml +++ b/actions/setup-env/action.yaml @@ -43,4 +43,4 @@ runs: distribution: ${{ inputs.java-distribution}} - name: Setup CMake if: ${{ inputs.setup-cmake == 'true' }} - uses: matrixorigin/CI/actions/setup-cmake@main + uses: matrixorigin/CI/actions/setup-cmake@alter_runner_arm From 6233737fc7af23ab7dd9784f110c6a98af57a6fc Mon Sep 17 00:00:00 2001 From: heni02 Date: Wed, 24 Jun 2026 13:13:45 +0800 Subject: [PATCH 14/14] chore(setup-env): reference setup-cmake@main Use @main for setup-cmake now that ARM support ships with the branch merge. Co-authored-by: Cursor --- actions/setup-env/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/setup-env/action.yaml b/actions/setup-env/action.yaml index b5b5337..2324bdb 100644 --- a/actions/setup-env/action.yaml +++ b/actions/setup-env/action.yaml @@ -43,4 +43,4 @@ runs: distribution: ${{ inputs.java-distribution}} - name: Setup CMake if: ${{ inputs.setup-cmake == 'true' }} - uses: matrixorigin/CI/actions/setup-cmake@alter_runner_arm + uses: matrixorigin/CI/actions/setup-cmake@main