From 627814b3843fcf9d41b06b56bbf1f9c524314428 Mon Sep 17 00:00:00 2001 From: David Fowler Date: Wed, 25 Mar 2026 22:10:00 -0700 Subject: [PATCH 1/8] 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/8] 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/8] 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 From c670934d98b5d7c36a853a0038d140406271d639 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 29 Mar 2026 14:33:46 +0000 Subject: [PATCH 4/8] Update Grpc.Tools to 2.80.0-pre1 for linux-arm64 compatibility Agent-Logs-Url: https://github.com/microsoft/aspire/sessions/c45a0b4c-4ff5-4111-8d23-b713819a9ae4 Co-authored-by: JamesNK <303201+JamesNK@users.noreply.github.com> --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 8ee92baad8a..cca9ff75994 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -96,7 +96,7 @@ - + From dbb2ca3887ab2ddb583f1c4e2d547736b5455c0a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 29 Mar 2026 14:57:15 +0000 Subject: [PATCH 5/8] Change Grpc.Tools version to 2.68.1 Agent-Logs-Url: https://github.com/microsoft/aspire/sessions/d4d41e10-f7c9-4607-9055-a79723c7bb5e Co-authored-by: JamesNK <303201+JamesNK@users.noreply.github.com> --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index cca9ff75994..6cd9f52718f 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -96,7 +96,7 @@ - + From 02909fa41dbd4bc71e5c72983966768b9d4ee643 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 29 Mar 2026 15:07:03 +0000 Subject: [PATCH 6/8] Update Grpc.AspNetCore and Grpc.Net.ClientFactory to 2.67.0 Agent-Logs-Url: https://github.com/microsoft/aspire/sessions/44c9e832-0487-4919-ab10-676903a81175 Co-authored-by: JamesNK <303201+JamesNK@users.noreply.github.com> --- Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 6cd9f52718f..3f2cd1611c3 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -94,8 +94,8 @@ - - + + From a23b90c8f5b12c4109de227e2eb859f70d3e004e Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Tue, 31 Mar 2026 08:27:17 +0800 Subject: [PATCH 7/8] Update Grpc packages: AspNetCore/ClientFactory to 2.76.0, Tools to 2.68.1 via VersionOverride --- Directory.Packages.props | 6 +++--- .../Stress.TelemetryService/Stress.TelemetryService.csproj | 2 +- playground/TestShop/BasketService/BasketService.csproj | 1 + playground/TestShop/MyFrontend/MyFrontend.csproj | 5 +---- src/Aspire.Dashboard/Aspire.Dashboard.csproj | 1 + src/Aspire.Hosting/Aspire.Hosting.csproj | 1 + tests/Aspire.Dashboard.Tests/Aspire.Dashboard.Tests.csproj | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 3f2cd1611c3..fae44efb83c 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -94,9 +94,9 @@ - - - + + + diff --git a/playground/Stress/Stress.TelemetryService/Stress.TelemetryService.csproj b/playground/Stress/Stress.TelemetryService/Stress.TelemetryService.csproj index c20cd04b721..6440812fe7a 100644 --- a/playground/Stress/Stress.TelemetryService/Stress.TelemetryService.csproj +++ b/playground/Stress/Stress.TelemetryService/Stress.TelemetryService.csproj @@ -13,7 +13,7 @@ - + diff --git a/playground/TestShop/BasketService/BasketService.csproj b/playground/TestShop/BasketService/BasketService.csproj index 91670be9ed4..6e22fca64c9 100644 --- a/playground/TestShop/BasketService/BasketService.csproj +++ b/playground/TestShop/BasketService/BasketService.csproj @@ -9,6 +9,7 @@ + diff --git a/playground/TestShop/MyFrontend/MyFrontend.csproj b/playground/TestShop/MyFrontend/MyFrontend.csproj index c958c3afbbc..875bf3311c7 100644 --- a/playground/TestShop/MyFrontend/MyFrontend.csproj +++ b/playground/TestShop/MyFrontend/MyFrontend.csproj @@ -14,10 +14,7 @@ - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - + diff --git a/src/Aspire.Dashboard/Aspire.Dashboard.csproj b/src/Aspire.Dashboard/Aspire.Dashboard.csproj index 5bf8efa6f3b..6e3db1c32bd 100644 --- a/src/Aspire.Dashboard/Aspire.Dashboard.csproj +++ b/src/Aspire.Dashboard/Aspire.Dashboard.csproj @@ -51,6 +51,7 @@ + diff --git a/src/Aspire.Hosting/Aspire.Hosting.csproj b/src/Aspire.Hosting/Aspire.Hosting.csproj index 0e720063c1a..20d5c5be4c0 100644 --- a/src/Aspire.Hosting/Aspire.Hosting.csproj +++ b/src/Aspire.Hosting/Aspire.Hosting.csproj @@ -57,6 +57,7 @@ + diff --git a/tests/Aspire.Dashboard.Tests/Aspire.Dashboard.Tests.csproj b/tests/Aspire.Dashboard.Tests/Aspire.Dashboard.Tests.csproj index 9196a29eb77..c3fcf11621a 100644 --- a/tests/Aspire.Dashboard.Tests/Aspire.Dashboard.Tests.csproj +++ b/tests/Aspire.Dashboard.Tests/Aspire.Dashboard.Tests.csproj @@ -17,7 +17,7 @@ - + From b4e6a89f572c7cf6a50efc7182b54f973743327a Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Tue, 31 Mar 2026 09:34:58 +0800 Subject: [PATCH 8/8] Apply suggestion from @JamesNK --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index fae44efb83c..8ee92baad8a 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -96,7 +96,7 @@ - +