Repository navigation
ci: publish via the org reusable-nuget-publish workflow - #12
Conversation
Replace the hand-rolled publish job with a thin caller of simplify9/.github's reusable-nuget-publish.yml. Every value carries over 1-1: workflow name, push-to-main + workflow_dispatch triggers, version line 8.0.x, .NET SDK 8.0.x, tests off, the same 1 packed project(s) in the same order, Release configuration, and SWNUGETKEY -> nuget.org. Tagging now uses the built-in GITHUB_TOKEN instead of S9_GITHUB_TOKEN. That org PAT expired in September (HTTP 401). With it, the next publish would push the package, fail to tag, and every later run would silently re-push the same version. From the shared pipeline: a release is blocked while a critical Dependabot alert is open (0 open today), and runs are serialized per ref.
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: simplify9/coderabbit/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (1)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📜 Recent review details🧰 Additional context used📓 Path-based instructions (1)Treat GitHub Actions changes as supply-chain sensitive.⚙️ CodeRabbit configuration file Files:
🪛 zizmor (1.30.0).github/workflows/nuget-publish.yml[error] 18-18: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy) (unpinned-uses) 🔇 Additional comments (1)
📝 Walkthrough
WalkthroughThe NuGet publishing workflow now calls a reusable workflow. It passes project, version, test, and secret settings. Permissions default to none, with the publish job granting the required permissions. ChangesNuGet publishing
Priority: ➖ Normal Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix Suggested labels: Suggested reviewers: Merge Risk: ⚪ Minimal · up to The publishing workflow retains the existing trust model for shared organization code. No actionable merge-blocking risk is established. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The new publishing path gives a shared workflow release credentials and permission to write repository contents. This warrants review, but the previous release path already trusted code maintained in the same organization for publishing and tagging. Retained concerns
Security review detailsSecurity Blast Radius
Security Findings and Attack Paths
Trust Boundaries and Controls
Resilience and Maintainability Implications
Hardening Proposals
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Can be merged independently. It works with the shared workflow already on
main; simplify9/.github#184 only adds improvements.Why
Moves this repo onto the org's shared NuGet pipeline (
simplify9/.github→reusable-nuget-publish.yml), with the same values as before.It also removes the dependency on
S9_GITHUB_TOKEN. That org PAT expired in September and now returns HTTP 401. With the old workflow, the next release would push the package, fail to create the tag, and every later run would recompute the same version and silently re-push nothing. SW-Bus hit exactly this on 2026-09-29.Old → new (1-1)
nuget-publish.yml/ Build and Publish NuGet Packagemain,workflow_dispatch8.0.5)8.0.x**/*UnitTests/*.csprojpdf-templar-sdk/pdf-templar-sdk.csproj**/*.csproj, ReleaseSWNUGETKEY→ nuget.org (reusable default)S9_GITHUB_TOKEN(org PAT)GITHUB_TOKENNew from the shared pipeline:
mainbranch publishes a prerelease, never a stable version.Verification
Equivalence check: a script independent of the generator re-reads the old and new files and asserts every value above maps 1-1. It passes, and a negative control of three injected mistakes was caught.
Lint:
actionlintis clean, and the caller's inputs and secrets were checked against the shared workflow's signature.Live dry-run: run 36565394548, with a fake API key and an unresolvable feed so nothing could publish.
8.0.5-ci-dryrun-reusable-nuget-publish.8The throwaway branch has been deleted, and no tag or package was created.