The signed build+sign pipeline (microsoft-aspire, definition 1602) has been failing on main since #17274 merged. Two distinct failures from the same PR, both in eng/scripts/verify-cli-archive.ps1.
Repro
Internal: microsoft-aspire pipeline 1602 (batched CI on main). The verifier only ever runs in the post-merge build+sign pipeline; it does not run on GitHub PRs, which is why both regressions reached main.
Failure 1 — aspire-managed --help (fixed by #17341, mitigated)
Test-ExtractedBundleLayout smoke-tested the bundled server with aspire-managed --help and asserted exit 0:
❌ Verification failed: aspire-managed failed with exit code 1.
Output: Usage: aspire-managed <dashboard|server|nuget> [args...]
Aspire.Managed's entry point (src/Aspire.Managed/Program.cs:22-28,58-62) is a hard args switch on dashboard|server|nuget; anything else — including --help — falls through to ShowUsage() and returns 1.
Failure 2 — aspire new aspire-ts-starter auto-restore hits nuget.org
Test-TypeScriptStarterProject invokes aspire new aspire-ts-starter, which after templating runs an automatic packager-managed AppHost-server bootstrap. That bootstrap performs a NuGet restore for Aspire.Hosting, Aspire.Hosting.JavaScript, Aspire.Hosting.CodeGeneration.TypeScript and their transitive deps. Aspire-owned packages route to the dnceng internal feed (resolved fine), but transitive Microsoft.Extensions.*, Grpc.*, OpenTelemetry.*, Newtonsoft.Json, ModelContextProtocol, … route to https://api.nuget.org/v3/index.json — which the 1ES signed-build agent has no egress to:
ERROR: Unable to load the service index for source https://api.nuget.org/v3/index.json.
Permission denied (api.nuget.org:443)
Permission denied
channel: daily
packages: Aspire.Hosting 13.4.0-preview.1.26270.9,
Aspire.Hosting.JavaScript 13.4.0-preview.1.26270.9,
Aspire.Hosting.CodeGeneration.TypeScript 13.4.0-preview.1.26270.9
❌ Failed to prepare AppHost server.
❌ Automatic 'aspire restore' failed for the new TypeScript starter project.
❌ 'aspire new aspire-ts-starter' failed with exit code 6
The C# starter check is unaffected because aspire new aspire-starter does not trigger a restore.
Expected
verify-cli-archive.ps1 succeeds end-to-end on the signed-build agents for all three RIDs.
Why both were missed pre-merge
Both checks were added in the same PR (#17274) and were validated against a synthetic fake archive in the acquisition tests. The real-archive verifier only runs in the build+sign pipeline, which never runs on GitHub PRs — so neither incompatibility surfaced until after merge to main.
The signed build+sign pipeline (
microsoft-aspire, definition 1602) has been failing onmainsince #17274 merged. Two distinct failures from the same PR, both ineng/scripts/verify-cli-archive.ps1.Repro
Internal:
microsoft-aspirepipeline 1602 (batched CI onmain). The verifier only ever runs in the post-merge build+sign pipeline; it does not run on GitHub PRs, which is why both regressions reachedmain.aspire-managedfix (Fix internal build break: 'aspire-managed --help' in CLI archive verifier returns exit 1 #17341) applied: https://dev.azure.com/dnceng/internal/_build/results?buildId=2980609 (linux-x64, win-x64)Failure 1 —
aspire-managed --help(fixed by #17341, mitigated)Test-ExtractedBundleLayoutsmoke-tested the bundled server withaspire-managed --helpand asserted exit 0:Aspire.Managed's entry point (src/Aspire.Managed/Program.cs:22-28,58-62) is a hardargs switchondashboard|server|nuget; anything else — including--help— falls through toShowUsage()and returns 1.Failure 2 —
aspire new aspire-ts-starterauto-restore hits nuget.orgTest-TypeScriptStarterProjectinvokesaspire new aspire-ts-starter, which after templating runs an automatic packager-managed AppHost-server bootstrap. That bootstrap performs a NuGet restore forAspire.Hosting,Aspire.Hosting.JavaScript,Aspire.Hosting.CodeGeneration.TypeScriptand their transitive deps. Aspire-owned packages route to the dnceng internal feed (resolved fine), but transitiveMicrosoft.Extensions.*,Grpc.*,OpenTelemetry.*,Newtonsoft.Json,ModelContextProtocol, … route tohttps://api.nuget.org/v3/index.json— which the 1ES signed-build agent has no egress to:The C# starter check is unaffected because
aspire new aspire-starterdoes not trigger a restore.Expected
verify-cli-archive.ps1succeeds end-to-end on the signed-build agents for all three RIDs.Why both were missed pre-merge
Both checks were added in the same PR (#17274) and were validated against a synthetic fake archive in the acquisition tests. The real-archive verifier only runs in the build+sign pipeline, which never runs on GitHub PRs — so neither incompatibility surfaced until after merge to
main.