Skip to content

build(release): ⬆️ document and enforce branch, tag and release naming - #488

Open
jagger wants to merge 2 commits into
thycotic-ps:devfrom
jagger:chore/487-release-naming
Open

jagger wants to merge 2 commits into
thycotic-ps:devfrom
jagger:chore/487-release-naming

Conversation

@jagger

@jagger jagger commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Branch, tag and release names had drifted, and nothing documented how a release is cut.
RELEASING.md defines the dev, main, release/X.Y.Z and type/issue-slug branches, the vX.Y.Z and vX.Y.Z-alphaN/-betaN/-rcN tags, the release title, and the steps for a prerelease and a final release.
CONTRIBUTING.md links to it and states the work branch format.
build.ps1 now stops a Prerelease, Release or PSGalleryRetry build that breaks those rules, before anything is published.

build.ps1 checks

  • The current branch must be release/<ModuleVersion>.
  • Prerelease: -GitHubPreTag is required and must equal the manifest Prerelease, case-sensitive. This was checked only when -GalleryKey was given.
  • Release and PSGalleryRetry: the manifest Prerelease must be empty.
  • -GitHubPreTag accepts alpha, beta or rc followed by a number from 1. It accepted only an alpha prefix.
  • Debug builds are unchanged.

The check block ran against stubbed branch and manifest data for 8 cases, each passing or stopping as intended.
The tag pattern rejects rc.1, RC1, rc0 and preview1.

Follow-ups

  • 0.63.0-rc1 was built from prerelease/0.63.0-rc1. The final 0.63.0 build needs release/0.63.0 cut from v0.63.0-rc1 with this change cherry-picked, or build.ps1 will stop it.
  • main was realigned to v0.62.1 (0f6cc718). Its 19 older commits each have an identical patch in dev, so no code was lost.
  • main now has its own Protect main ruleset: no deletion, fast-forward only. Protect dev is unchanged except that it no longer covers main.
  • Cutting a release branch merges the previous release tag with -s ours, so each release descends from the last and main can fast-forward.
  • The CHANGELOG entry uses the 0.63.0 -- unreleased heading that feat: add 825 REST cmdlets #482 also adds, so expect a small conflict there.

Closes #487.

jagger and others added 2 commits October 30, 2026 09:49
…ps#487)

RELEASING.md sets the naming for branches (dev, main, release/X.Y.Z,
type/issue-slug), tags (vX.Y.Z and vX.Y.Z-alphaN/betaN/rcN) and release
titles, and the steps to cut a prerelease and a final release.
CONTRIBUTING.md links to it and describes work branch names.

build.ps1 stops a Prerelease, Release or PSGalleryRetry build unless it
runs from release/<ModuleVersion>, -GitHubPreTag matches the manifest
Prerelease (prerelease builds), and Prerelease is cleared (release
builds). -GitHubPreTag accepts alpha, beta and rc followed by a number.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
main now has its own ruleset (no deletion, fast-forward only), so the
release step fast-forwards it with a push. Merging the release branch
back into dev is removed: the dev ruleset requires pull requests and
linear history. Cutting a release branch now merges the previous
release tag with -s ours, which changes no files but keeps each release
a descendant of the last so main can fast-forward.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
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.

Document and enforce branch, tag and release naming

1 participant