From 627814b3843fcf9d41b06b56bbf1f9c524314428 Mon Sep 17 00:00:00 2001 From: David Fowler Date: Wed, 25 Mar 2026 22:10:00 -0700 Subject: [PATCH 1/3] Add win-arm64 and linux-arm64 to CLI native archive build matrix Add native arm64 build targets to the CI pipeline so the dogfood script and release bundles include arm64 CLI binaries: - win-arm64 on windows-11-arm runner - linux-arm64 on ubuntu-24.04-arm runner Updates build-cli-native-archives.yml default matrix and adds per-OS build jobs in tests.yml following the existing pattern. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/build-cli-native-archives.yml | 4 +++- .github/workflows/tests.yml | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-cli-native-archives.yml b/.github/workflows/build-cli-native-archives.yml index fbcd43eca02..c9451123984 100644 --- a/.github/workflows/build-cli-native-archives.yml +++ b/.github/workflows/build-cli-native-archives.yml @@ -13,13 +13,15 @@ on: targets: description: > JSON array of target objects to build. Each object must have 'os', 'runner', and 'rids' keys. - Defaults to all platforms (linux-x64, win-x64, osx-arm64). + Defaults to all platforms (linux-x64, linux-arm64, win-x64, win-arm64, osx-arm64). required: false type: string default: >- [ {"os": "ubuntu-latest", "runner": "8-core-ubuntu-latest", "rids": "linux-x64"}, + {"os": "ubuntu-latest", "runner": "ubuntu-24.04-arm", "rids": "linux-arm64"}, {"os": "windows-latest", "runner": "windows-latest", "rids": "win-x64"}, + {"os": "windows-latest", "runner": "windows-11-arm", "rids": "win-arm64"}, {"os": "macos-latest", "runner": "macos-latest", "rids": "osx-arm64"} ] diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b2295116337..f8b63d0202c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -47,6 +47,13 @@ jobs: versionOverrideArg: ${{ inputs.versionOverrideArg }} targets: '[{"os": "ubuntu-latest", "runner": "8-core-ubuntu-latest", "rids": "linux-x64"}]' + build_cli_archive_linux_arm64: + name: Build native CLI archive (Linux ARM64) + uses: ./.github/workflows/build-cli-native-archives.yml + with: + versionOverrideArg: ${{ inputs.versionOverrideArg }} + targets: '[{"os": "ubuntu-latest", "runner": "ubuntu-24.04-arm", "rids": "linux-arm64"}]' + # Per-OS CLI archive builds produce RID-specific DCP and Dashboard NuGets. # Split by OS so that test jobs can depend on just their platform's archive, # allowing Linux tests to start as soon as the Linux archive completes @@ -58,6 +65,13 @@ jobs: versionOverrideArg: ${{ inputs.versionOverrideArg }} targets: '[{"os": "windows-latest", "runner": "windows-latest", "rids": "win-x64"}]' + build_cli_archive_windows_arm64: + name: Build native CLI archive (Windows ARM64) + uses: ./.github/workflows/build-cli-native-archives.yml + with: + versionOverrideArg: ${{ inputs.versionOverrideArg }} + targets: '[{"os": "windows-latest", "runner": "windows-11-arm", "rids": "win-arm64"}]' + build_cli_archive_macos: name: Build native CLI archive (macOS) uses: ./.github/workflows/build-cli-native-archives.yml @@ -226,7 +240,9 @@ jobs: setup_for_tests, build_packages, build_cli_archive_linux, + build_cli_archive_linux_arm64, build_cli_archive_windows, + build_cli_archive_windows_arm64, build_cli_archive_macos, extension_tests_win, typescript_sdk_tests, From ee5c0baabfb612073acaa918451e1ea54ed8270e Mon Sep 17 00:00:00 2001 From: David Fowler Date: Wed, 25 Mar 2026 22:16:42 -0700 Subject: [PATCH 2/3] Use RID in job name to avoid duplicate names in Actions UI Address review feedback: with multiple targets sharing the same 'os' value, the job name 'Build CLI (ubuntu-latest)' appeared twice. Switch to matrix.targets.rids for unique names like 'Build CLI (linux-arm64)'. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/build-cli-native-archives.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-cli-native-archives.yml b/.github/workflows/build-cli-native-archives.yml index c9451123984..983d9ea4580 100644 --- a/.github/workflows/build-cli-native-archives.yml +++ b/.github/workflows/build-cli-native-archives.yml @@ -28,7 +28,7 @@ on: jobs: build_cli_archives: - name: Build CLI (${{ matrix.targets.os }}) + name: Build CLI (${{ matrix.targets.rids }}) runs-on: ${{ matrix.targets.runner }} strategy: matrix: From 6343f2b37729e0b671d523d8952b9478ed3768a5 Mon Sep 17 00:00:00 2001 From: David Fowler Date: Wed, 25 Mar 2026 22:20:34 -0700 Subject: [PATCH 3/3] Fix RID detection to use runner.arch for arm64 support The RID computation hardcoded x64 for Linux and Windows, which would download wrong-arch NuGet packages if tests ever run on arm64 runners. Use runner.os + runner.arch to correctly map to the target RID. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/run-tests.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 62ad4c43211..76b20e8fc85 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -149,11 +149,15 @@ jobs: shell: pwsh run: | $runnerOs = "${{ runner.os }}" - switch ($runnerOs) { - 'Linux' { $rid = 'linux-x64' } - 'macOS' { $rid = 'osx-arm64' } - 'Windows' { $rid = 'win-x64' } - Default { Write-Error "Unknown runner.os '$runnerOs' for RID mapping"; exit 1 } + $runnerArch = "${{ runner.arch }}" + $rid = switch ("$runnerOs-$runnerArch") { + 'Linux-X64' { 'linux-x64' } + 'Linux-ARM64' { 'linux-arm64' } + 'Windows-X64' { 'win-x64' } + 'Windows-ARM64' { 'win-arm64' } + 'macOS-ARM64' { 'osx-arm64' } + 'macOS-X64' { 'osx-x64' } + Default { Write-Error "Unknown runner OS/arch '$runnerOs-$runnerArch' for RID mapping"; exit 1 } } Write-Host "Using RID=$rid" "RID=$rid" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append