Add win-arm64 and linux-arm64 to CLI native archive build matrix#15599
Add win-arm64 and linux-arm64 to CLI native archive build matrix#15599davidfowl wants to merge 3 commits intorelease/13.2from
Conversation
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>
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 15599Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 15599" |
There was a problem hiding this comment.
Pull request overview
Extends the CI workflows to produce native Aspire CLI archive builds for additional ARM64 platforms, so release/dogfood bundles include Windows/Linux ARM64 binaries alongside existing x64/macOS builds.
Changes:
- Add
linux-arm64andwin-arm64targets to the reusable native-archive workflow’s default build matrix. - Add corresponding ARM64 archive jobs to
tests.ymland include them in the final “results” gate.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
.github/workflows/tests.yml |
Adds Linux/Windows ARM64 native CLI archive jobs and wires them into the final results job dependencies. |
.github/workflows/build-cli-native-archives.yml |
Expands the default targets matrix to include linux-arm64 and win-arm64 native archive builds. |
Comments suppressed due to low confidence (1)
.github/workflows/tests.yml:74
- In the
targetsJSON,osis set towindows-latestbut the runner label iswindows-11-arm. Ifosis intended to be a display value, this currently hides that the build is running on Windows ARM64 and can lead to ambiguous/duplicate job names in the called workflow. Consider aligningoswith the runner/actual platform, or relying onrids/runnerfor display in the reusable workflow.
uses: ./.github/workflows/build-cli-native-archives.yml
with:
versionOverrideArg: ${{ inputs.versionOverrideArg }}
targets: '[{"os": "windows-latest", "runner": "windows-11-arm", "rids": "win-arm64"}]'
| {"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"} |
There was a problem hiding this comment.
The default targets array now has multiple entries with the same os value (ubuntu-latest for both linux-x64/linux-arm64 and windows-latest for both win-x64/win-arm64). Since the matrix job name is Build CLI (${{ matrix.targets.os }}), this will create duplicate job names in the Actions UI, making it hard to tell which RID/runner failed. Consider changing the job name to include ${{ matrix.targets.rids }} (and/or ${{ matrix.targets.runner }}), or make the os field unique per target (or drop it if it’s only used for display).
There was a problem hiding this comment.
Fixed — changed job name to Build CLI (${{ matrix.targets.rids }}) so each target gets a unique name like "Build CLI (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"}]' | ||
|
|
There was a problem hiding this comment.
In the targets JSON, os is set to ubuntu-latest while the actual runner label is ubuntu-24.04-arm. Since the reusable workflow currently uses matrix.targets.os in the job name, this ends up mislabeling the ARM64 build as “ubuntu-latest” (and can contribute to duplicate names). Consider setting os to match the runner/actual platform, or updating the reusable workflow to use rids/runner for display instead of os.
This issue also appears on line 70 of the same file.
There was a problem hiding this comment.
Fixed — the reusable workflow job name now uses matrix.targets.rids instead of matrix.targets.os, so it displays correctly regardless of the os field value.
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>
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>
|
🎬 CLI E2E Test Recordings — 51 recordings uploaded (commit View recordings
📹 Recordings uploaded automatically from CI run #23578848784 |
Description
Adds
win-arm64andlinux-arm64native CLI archive builds to the CI pipeline, and fixes architecture detection for test runners.Currently only
linux-x64,win-x64, andosx-arm64are built, which means the dogfood script and release bundles have no arm64 binaries for Windows or Linux.Changes
build-cli-native-archives.ymllinux-arm64target onubuntu-24.04-armrunnerwin-arm64target onwindows-11-armrunnertests.ymlbuild_cli_archive_linux_arm64andbuild_cli_archive_windows_arm64jobs (following existing per-OS pattern)resultsfinal status checkrun-tests.ymlrunner.archin addition torunner.os, so arm64 runners download the correct architecture-specific NuGet packages instead of always assuming x64The new jobs run in parallel with existing builds, so they don't increase overall CI wall time.
Related to #15529 (cross-compiled CLI bundles missing DCP).
Checklist