Fix Aspire CLI npm signing scope - #17770
Conversation
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 -- 17770Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 17770" |
There was a problem hiding this comment.
Pull request overview
This PR fixes Aspire CLI npm package signing metadata so scoped signing rules cover nested native payloads while preserving detached signatures for npm tarballs.
Changes:
- Adds scoped
CertificateName="None"signing rules for nestedaspire.exeandaspirepayloads in CLI npm tarballs. - Adds an infrastructure test that verifies all Aspire CLI npm signing scope rules are present exactly once.
Show a summary per file
| File | Description |
|---|---|
eng/Signing.props |
Adds scoped signing exclusions for nested native CLI executables in npm package tarballs. |
tests/Infrastructure.Tests/Pipelines/NpmCliPackageTests.cs |
Adds XML-based assertions for Aspire CLI npm signing scope rules. |
Copilot's findings
- Files reviewed: 2/2 changed files
- Comments generated: 0
|
Double checked this against the actual failed signing path. The original failure in build 2988560 was Arcade resolving nested Local |
01c5a9a
into
microsoft:main
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* [release/13.4] Add Aspire CLI npm package release integration Backport of #17297 to release/13.4. Adds npm packaging and release-pipeline publishing for the Aspire CLI: pack/sign/verify of the @microsoft/aspire-cli pointer package and its seven RID packages, npm install validation steps, npm publish + registry validation stages in release-publish-nuget.yml, npm pipeline variables, and CLI npm-install detection/update messaging. The docs/release-process.md changes from the source PR are intentionally omitted: on main they are interleaved with VS Code extension / Marketplace release documentation that does not apply to release/13.4 (the VS Code extension is not released from this branch). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix Aspire CLI npm signing scope (#17770) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Description
Fixes the internal signed build failure introduced by the Aspire CLI npm package release integration. The failed build staged
microsoft-aspire-cli-win-*.tgzinto theAspireCliNpmPackagesigning scope, but the nestedaspire.exeonly had an unscoped signing rule. Arcade resolves nested file certificates within theItemsToSigncollision scope, so it failed withCould not determine certificate name for signable file(s): File: aspire.exe.This keeps the npm tarball signing behavior scoped to Aspire CLI npm packages:
.tgzstill gets the detachedLinuxSign500180PGPsignature,aspire.jsstill usesMicrosoftDotNet500, and the already-signed nativeaspire.exe/aspirepayloads are explicitlyCertificateName="None"inside that same scope.Internal validation build: https://dev.azure.com/dnceng/internal/_build/results?buildId=2988598
Relevant tasks from build 2988598 completed successfully:
🟣Buildon Windows, the task that failed on main🟣Validate npm package signatures🟣Sign VS Code extension🟣Verify VS Code extension signature🟣Verify CLI npm package (...)tasks for Windows, Linux, and macOS RIDsFixes # (issue)
Security considerations
This change touches signing metadata only. The native executable payloads in the npm RID packages are copied from the already-signed native CLI archives; the main Windows build should produce detached signatures for the npm tarballs rather than re-sign those nested native payloads. The tarballs remain covered by detached PGP signatures.
Checklist
<remarks />and<code />elements on your triple slash comments?