Publish filtered signed packages through BAR - #1524
Open
jonathanpeppers wants to merge 6 commits into
Open
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a BAR-based publishing pipeline for signed NuGet packages, ensuring only missing packages are registered/promoted to the public .NET 10 (dotnet10) feed, with a deterministic audit inventory for traceability.
Changes:
- Introduces a new
publish_signed_packagesstage that consumes the existingnuget-signedartifact, filters to missing packages, registers them in BAR, and promotes via the.NET 10channel. - Adds a
SignedPackagePublisher.NET tool (plus focused NUnit tests) to inspect signed packages, probe the target feed, and emit both an audit inventory and an Arcade V3 asset manifest. - Documents the one-time Azure DevOps setup and introduces scoped restore configuration for the isolated publishing surface.
Reviewed changes
Copilot reviewed 20 out of 20 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| global.json | Pins Arcade MSBuild SDK version and adds tools.dotnet for Arcade toolset initialization. |
| docs/publishing-signed-packages.md | Documents the BAR-based signed package publishing flow and required ADO setup. |
| build/publishing/NuGet.config | Defines a scoped restore surface with dotnet-public + dotnet-eng. |
| build/publishing/promote-build.ps1 | Adds a promotion script to validate and promote a BAR build to a specific channel. |
| build/publishing/SignedPackagePublisher/SignedPackagePublisher.csproj | New net10 console tool project with Arcade publishing dependencies. |
| build/publishing/SignedPackagePublisher/PublishingPlanner.cs | Implements deduplication + feed probing to decide which packages to include. |
| build/publishing/SignedPackagePublisher/PublishingOutput.cs | Writes deterministic inventory JSON, stages packages, and emits an Arcade V3 manifest. |
| build/publishing/SignedPackagePublisher/Program.cs | Parses CLI args and orchestrates inspection, planning, and output emission. |
| build/publishing/SignedPackagePublisher/PackageInspector.cs | Inspects .nupkg identity/version and computes SHA-256 for auditing. |
| build/publishing/SignedPackagePublisher/NuGetFeedProbe.cs | Probes feed existence with retry/backoff and failure classification. |
| build/publishing/SignedPackagePublisher/Models.cs | Defines shared models/enums (inventory entries, plan, error types). |
| build/publishing/SignedPackagePublisher.Tests/SignedPackagePublisher.Tests.csproj | Adds a dedicated test project for the publishing tool. |
| build/publishing/SignedPackagePublisher.Tests/PublishingPlannerTests.cs | Covers filtering, deduplication, and error cases in the planner. |
| build/publishing/SignedPackagePublisher.Tests/PublishingOutputTests.cs | Verifies byte-for-byte deterministic inventory and manifest attributes. |
| build/publishing/SignedPackagePublisher.Tests/PackageInspectorTests.cs | Verifies nuspec identity/version normalization and SHA-256 length. |
| build/publishing/SignedPackagePublisher.Tests/FeedFailureClassifierTests.cs | Verifies strict HTTP failure classification behavior. |
| build/publishing/SignedPackagePublisher.Tests/GlobalUsings.cs | Adds NUnit global using for tests. |
| build/ci/variables.yml | Adds BAR publishing variables (disabled by default). |
| build/ci/stage-publish-signed-artifacts.yml | New publish stage wiring: filter → inventory → register in BAR → promote. |
| azure-pipelines.yml | Wires the new publish stage template into the main pipeline. |
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
Base automatically changed from
jonathanpeppers-bootstrap-arcade-tooling
to
main
August 18, 2026 16:36
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 00d22177-794c-45e9-87a4-4c2cacb26a91
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 00d22177-794c-45e9-87a4-4c2cacb26a91
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 00d22177-794c-45e9-87a4-4c2cacb26a91
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 00d22177-794c-45e9-87a4-4c2cacb26a91
jonathanpeppers
force-pushed
the
jonathanpeppers-publish-signed-packages-bar
branch
from
August 18, 2026 16:36
71c67f0 to
93df69f
Compare
Member
Author
|
@dalexsoto review |
dalexsoto
approved these changes
Aug 18, 2026
dalexsoto
left a comment
Member
There was a problem hiding this comment.
The BAR publishing stage safely filters missing signed packages, uses deterministic manifests and explicit restore configuration, and remains disabled until external setup is complete.
Member
Author
|
/azp run |
|
Azure Pipelines: No pipelines were found matching this branch/path. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
nuget-signedartifact after the repository signing stagedotnet10feed before creating an Arcade V3 asset manifestValidation
dotnet-publicanddotnet-engBAR registration validation
AndroidX run 20260817.2 exercises the BAR path from commit
71c67f0b45ed9d932031f096e80b9b03523fd32b.The manual validation mode:
nuget-signedfrom successful official AndroidX build14977676dotnet10feed checks, deterministic inventory generation, package filtering, and Arcade V3 manifest generationdotnet10Stack
Depends on #1523 (
jonathanpeppers-bootstrap-arcade-tooling).