Template
2.5 KiB
2.5 KiB
name, description, argument-hint
| name | description | argument-hint |
|---|---|---|
| new-release | Cut a new release: tag the appropriate commit, generate the changelog, and produce build artifacts. Use when: releasing a new version, tagging a release, publishing NuGet packages, preparing release artifacts. | Branch or commit to release from (default: current main) and the kind of release (stable, prerelease, hotfix) |
New Release
Versioning is GitVersion-driven (GitVersion.yml). Do not hand-pick versions — let GitVersion compute them from branch and tag history.
Versioning
| Branch | Label | Resulting version |
|---|---|---|
main |
— | MAJOR.MINOR.PATCH (stable) |
develop / dev / development |
beta |
MAJOR.MINOR.PATCH-beta.N |
release/*, hotfix/*, feature/* |
branch name | …-<branch>.N |
- Tags use the prefix
v(regex[vV]?also acceptsVor none). - Each
src/*project is versioned independently: only changes under that project's own directory,Directory.Packages.props, orGitVersion.ymlincrement its version (seeGenerateProjectGitVersionConfiginsrc/Directory.Build.propsandGitVersion.template.yml). A change to one library does not bump a sibling's version. - Increments are suppressed for already-merged branches and already-tagged commits.
Procedure
- Sync.
git fetch --all --tags && git status— confirm clean. - Compute.
dotnet build src\<Project>\<Project>.csproj -getProperty:Version— verify the value matches expectations for that specific project (there is no single repo-wide version). - Pack.
dotnet pack -c Release(or use the docker-buildpacktarget). Artifacts land inartifacts/nuget/. - Tag.
git tag -a v<version> -m "Release v<version>" && git push origin v<version>. - Publish packages to the configured feed.
- Create the GitHub release linked to the tag, using the generated changelog as notes.
For hotfixes: branch from the latest stable tag (git switch -c hotfix/<name> v<latest-stable>), follow the procedure, then back-merge into main and develop.
Guardrails
- Tags are immutable once pushed; never move or delete them.
- Never skip a
PATCH— ship a fix forward. - Do not edit
GitVersion.ymlor a generatedsrc/*/GitVersion.ymlto force a version. Address the underlying cause (missing tag, branch base, path filter, commit messages). Generated per-project files are gitignored build artifacts, re-derived from the rootGitVersion.ymlon every build — never hand-edit them.