Sibling of milestone #13. RFC #267.
What
Rewrite .github/workflows/release.yml from its current stopgap shape (workflow_dispatch only) to the real model: tag-triggered, three deployment records, one per environment.
Plus a guard that the tag is pointing at a release/v* branch (defensive — prevents accidental publishes from tags pointing at random commits).
Acceptance criteria
Depends on
release/v11 exists.
- Three environments exist.
NUGET_API_KEY migrated to env secret.
Notes
Build.CI.GitHubActions.cs is the source of truth for consumer-facing generated workflows. This file (release.yml) is hand-written — header comment already documents this. The refactor doesn't affect generated output.
- This is the biggest single PR of the milestone. Worth landing the env + secret pieces first so this PR is purely YAML structure changes.
Sibling of milestone #13. RFC #267.
What
Rewrite
.github/workflows/release.ymlfrom its current stopgap shape (workflow_dispatchonly) to the real model: tag-triggered, three deployment records, one per environment.Plus a guard that the tag is pointing at a
release/v*branch (defensive — prevents accidental publishes from tags pointing at random commits).Acceptance criteria
push.tags: v*.release/v*branch (git branch -r --contains $GITHUB_SHA | grep -E 'origin/release/v[0-9]+').Test+Packrun once (shared artifacts).environment:declared:publish-nuget-org(env:nuget-org, requires approval) →dotnet nuget push ... nuget.orgpublish-github-packages(env:github-packages) →dotnet nuget push ... github.pkgpublish-github-releases(env:github-releases) →gh release upload(oractions/upload-release-asset)environment:keyword).Nuke.* transition-shimpush (currently inline at the bottom of the workflow) is folded intopublish-github-packages— same destination.--skip-duplicatesemantics so partial successes are recoverable.workflow_dispatchtrigger preserved as a backup with a clear in-file comment that it's the fallback (e.g. for re-running a partial publish that hit a transient API failure).Depends on
release/v11exists.NUGET_API_KEYmigrated to env secret.Notes
Build.CI.GitHubActions.csis the source of truth for consumer-facing generated workflows. This file (release.yml) is hand-written — header comment already documents this. The refactor doesn't affect generated output.