Skip to content

Re-sync release-workflow fixes from template (#213/#214)#196

Merged
ptr727 merged 3 commits into
developfrom
fix/release-workflow-resync-195
Jun 26, 2026
Merged

Re-sync release-workflow fixes from template (#213/#214)#196
ptr727 merged 3 commits into
developfrom
fix/release-workflow-resync-195

Conversation

@ptr727

@ptr727 ptr727 commented Jun 26, 2026

Copy link
Copy Markdown
Owner

Implements the re-sync task in #195 — the single-target adaptation of template PRs ptr727/ProjectTemplate#215 (#213) and ptr727/ProjectTemplate#216 (#214).

#213 — develop leg published as a stable NuGet package

NBGV derives PublicRelease from the CI branch (GITHUB_REF). On a publish dispatched from main, every matrix leg saw GITHUB_REF=refs/heads/main, so the develop leg was classified public and its -g<sha> prerelease suffix stripped → published to NuGet as a stable version.

  • get-version-task.yml: add a branch input; pin GITHUB_REF/GITHUB_REF_NAME for the NBGV step to the leg's branch.
  • Thread branch into both get-version callers (build-release-task.yml, build-nugetlibrary-task.yml).
  • build-release-task.yml: replace the main-only verify step with a validate-release entry gate that fails fast in both directions — main must be public (no prerelease -), every other branch must carry one.

#214 — blanket artifact cleanup destroyed diagnostics

The cleanup-artifacts job deleted all run artifacts (.artifacts[].id), taking logs/diagnostics with the transfer artifacts.

  • build-release-task.yml: surgically delete only the consumed release-asset-<branch>-* artifacts at the point of consumption (best-effort; retention-days: 1 backstop).
  • publish-release.yml / test-pull-request.yml: remove the blanket cleanup-artifacts job; grant actions: write to the publish job.

Testing

  • NBGV mechanism proven locally: GITHUB_REF=refs/heads/mainPublicRelease=True, 1.4.1 (reproduces the bug); GITHUB_REF=refs/heads/developPublicRelease=False, 1.4.1-g10cc912fcd (fixed).
  • validate-release truth table verified (8 cases): catches develop+clean version, allows develop+-g<sha>, allows main public, rejects main+prerelease, handles +buildmetadata.
  • actionlint clean; CRLF preserved on all five workflow files; job dependency graph intact.

Closes #195.

🤖 Generated with Claude Code

Apply the #213/#214 fixes (template PRs ptr727/ProjectTemplate#215/#216)
adapted to this single-target NuGet repo.

#213 - develop leg published as a stable NuGet package:
- get-version-task: add a `branch` input and pin GITHUB_REF/GITHUB_REF_NAME
  for the NBGV step, so PublicRelease is classified against the leg's branch
  instead of the dispatching ref. Verified locally: GITHUB_REF=develop now
  yields 1.4.x-g<sha>, GITHUB_REF=main yields clean 1.4.x.
- Thread `branch` into both get-version callers.
- build-release-task: replace the main-only verify step with a validate-release
  entry gate that fails fast in both directions (main must be public; every
  other branch must carry a prerelease suffix).

#214 - blanket artifact cleanup destroyed diagnostics/build records:
- build-release-task: surgically delete only the consumed
  release-asset-<branch>-* transfer artifacts after the release is created.
- publish-release / test-pull-request: drop the blanket cleanup-artifacts job;
  grant actions:write to the publish job. retention-days:1 upload backstop
  confirmed.

actionlint clean; CRLF preserved on every touched workflow.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 26, 2026 18:53

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR re-syncs workflow fixes from the project template to ensure multi-branch publishing behaves correctly in this repo’s single-target (NuGet-only) release pipeline, and to avoid deleting diagnostic artifacts.

Changes:

  • Pin Nerdbank.GitVersioning (NBGV) branch classification per matrix leg by threading a branch input into get-version-task.yml.
  • Add an early validate-release gate to prevent publishing a develop leg as a stable version (and prevent prereleases on main).
  • Replace blanket artifact cleanup with targeted deletion of only consumed release-asset-<branch>-* artifacts; remove cleanup jobs from entrypoint workflows and grant required permissions.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
.github/workflows/test-pull-request.yml Removes the blanket artifact cleanup job from PR CI to preserve diagnostics.
.github/workflows/publish-release.yml Grants actions: write to enable surgical artifact deletion; removes blanket cleanup job.
.github/workflows/get-version-task.yml Adds branch input and pins GITHUB_REF/GITHUB_REF_NAME for the NBGV step per leg.
.github/workflows/build-release-task.yml Threads branch into versioning, adds validate-release gate, and deletes consumed release-asset-* artifacts post-release.
.github/workflows/build-nugetlibrary-task.yml Threads branch into versioning to ensure correct prerelease/public classification for NuGet builds.

Comment thread .github/workflows/build-release-task.yml Outdated
The reference was an instruction-doc artifact (#195 section label), not
present in the template's own comment. Match the template verbatim so the
comment is self-contained in-repo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Comment thread .github/workflows/build-release-task.yml
…condition

Pull down the template fix for the edge case reported as ProjectTemplate#217:
the surgical delete step now gates on the same
`exists=='false' || workflow_dispatch` condition as the create step, so a
scheduled re-run on an existing tag no longer deletes the freshly built
artifacts (retention-days: 1 reaps them instead). Re-synced verbatim from
template PR ptr727/ProjectTemplate#218, which also clears the condensed-comment
drift from the original #195 snippet.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated no new comments.

@ptr727 ptr727 merged commit 14f645d into develop Jun 26, 2026
8 checks passed
@ptr727 ptr727 deleted the fix/release-workflow-resync-195 branch June 26, 2026 20:36
ptr727 added a commit that referenced this pull request Jun 26, 2026
Release: promote develop to main

- UN M.49 region containment (#193, version floor 1.4)
- Release-workflow fixes re-synced from template (#196: #213/#214/#217)

Conflicts in three workflow files were the parallel setup-dotnet dependabot
bump (identical on both branches); resolved to develop's authoritative
versions (newer template re-sync + the workflow fixes).
ptr727 added a commit that referenced this pull request Jun 26, 2026
…verride

The #196 re-sync (template #215) tried to restore the develop leg's prerelease
tag by overriding GITHUB_REF in the nbgv step env. That is ineffective:
GITHUB_REF is a reserved GitHub variable a step-level env cannot reliably
override, so NBGV's GitHub Actions cloud-build provider still read the dispatch
ref (main) as BuildingRef and classified every matrix leg as the public ref.

NBGV computes the version from the checked-out branch history; its cloud-build
provider only overrides that with GITHUB_REF. Set IGNORE_GITHUB_REF=true so NBGV
ignores the CI ref and versions from the actually-checked-out branch (each leg
already checks out its own branch).

Verified in CI (dotnet/nbgv action):
- checkout develop, IGNORE_GITHUB_REF=true  -> PublicRelease=False, 1.4.2-g14f645dfd9
- checkout main,    IGNORE_GITHUB_REF=true  -> PublicRelease=True,  1.4.3
- checkout main,    IGNORE_GITHUB_REF=false -> suffix (reproduces the bug)

Removes the now-unused branch input/threading added for the GITHUB_REF override;
the validate-release entry gate stays as the backstop.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ptr727 added a commit that referenced this pull request Jun 26, 2026
NBGV's GitHub Actions provider reads the reserved GITHUB_REF (which a step env
cannot override); set IGNORE_GITHUB_REF=true so it versions from the
checked-out branch instead. Supersedes the ineffective GITHUB_REF override from
#196. CI-verified: develop checkout -> 1.4.x-g<sha> prerelease, main -> stable.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants