fix: decouple NuGet publication from indexing latency - #181
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 055bc013d9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
SonarQube Cloud successThe SonarQube Cloud Quality Gate passed for this PR. Quality Gate status: OK
|
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9725748dbb
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
@codex review |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
@codex revirew |
|
To use Codex here, create an environment for this repo. |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 133d0dfa47
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1976fa76dd
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Summary
Keeps the core fix from PR #181: NuGet.org indexing is asynchronous, so a successful
dotnet nuget pushno longer blocks publication of the remaining governed package set while waiting for Flat Container visibility.This update also improves the manual recovery UX by resolving the release source up front from a static
workflow_dispatchinput model:source_type=branch,source_ref=master,version=3.1.2. The workflow resolvesrefs/heads/master, the current remote branch HEAD commit, and the explicit version.source_type=tag,source_ref=v3.1.2,versionempty. The workflow validates the remote tag, derives version3.1.2, and peelsv3.1.2^{commit}so lightweight and annotated tags both resolve to the validated commit.validated_commitis no longer an operator-facing input; recovery derives it internally from the selected branch or tag and logs an early source-resolution summary.Changes
releaseconcurrency group withcancel-in-progress: false, so governed release/package state cannot be mutated concurrently and recovery never cancels a running release;.nupkgpublication uses--no-symbols, then.snupkgartifacts are submitted separately through NuGet.org V3 tooling;release-packageartifact from an explicitoriginal_release_run_id, validates SHA256SUMS/manifest/catalog/version/repository/commit against the resolved source, and falls back to a deterministic rebuild when that artifact is unavailable;git/curl/dotnet, so no real NuGet.org publication is triggered.Operator note
For branch recovery, use:
For tag recovery, use:
Tag mode automatically derives the package version and validated commit. Providing a non-empty
versionin tag mode fails closed to avoid ambiguous operator intent.When possible, provide
original_release_run_idfrom the failed normal release run so recovery can reuse the exact validatedrelease-packageartifact. If that artifact has expired or is unavailable, the workflow logs the deterministic rebuild fallback and validates the rebuilt artifact set before any publication.Symbol package limitation
NuGet.org documents
.snupkgvalidation/indexing as asynchronous and supports publishing symbols through the V3 API, but it does not expose a public Flat Container-style endpoint that lets this workflow download and byte-compare an existing.snupkg. Recovery therefore submits symbol packages separately and logs that limitation instead of claiming independent symbol-byte verification. Primary.nupkgartifacts remain content-verified.Validation
powershell -NoProfile -ExecutionPolicy Bypass -File ./eng/test-release-governance.ps1;python -m check_jsonschema --builtin-schema vendor.github-workflows .github/workflows/*.yml;git diff --check;dotnet restore ./Dapper.FluentMap.slnx;dotnet build ./Dapper.FluentMap.slnx --configuration Release --no-restore;dotnet test ./Dapper.FluentMap.slnx --configuration Release --no-build;dotnet pack ./Dapper.FluentMap.slnx --configuration Release --no-build --output ./artifacts/validation-packages-20260909204859;powershell -NoProfile -ExecutionPolicy Bypass -File ./eng/validate-package-metadata.ps1 -PackageDirectory ./artifacts/validation-packages-20260909204859;powershell -NoProfile -ExecutionPolicy Bypass -File ./eng/validate-release-artifacts.ps1 -PackageDirectory ./artifacts/validation-packages-20260909204859 -Version 3.0.1-dev ....pwshandactionlintwere not available on the local machine; Windows PowerShell and GitHub workflow schema validation passed.