ci: CalVer release automation + dev/master branch flow - #80
Merged
Merged
Conversation
Mirrors the versioning/CI system from the dev-prompt project, adapted for a
NuGet library.
Branch model:
- dev is the long-lived integration branch; everything targets it.
- master is the release branch. A dev->master merge cuts exactly one release.
Versioning (scripts/compute-version.sh):
- CalVer YYYY.(MM*100+DD).BUILD, e.g. 2026.909.1.
- Computed at release time from today's date + existing git tags (build =
highest same-day tag + 1, else 1). Nothing is hand-incremented.
- Tags are un-prefixed to match this repo's existing history; the version is
passed to `dotnet pack -p:Version=` so no file is mutated or committed.
- csproj <Version> is now a 0.0.0-dev placeholder.
Workflows:
- ci.yml PR gate on master + dev; aggregating `check` job for branch
protection. Replaces build-check.yml.
- ci-dev.yml per-commit build on push to dev.
- release.yml push to master (or manual dispatch) -> compute version, pack,
push to NuGet, GitHub Release (creates the tag), Discord.
Skips on [skip release] / doc- and CI-only changes. A manual
draft run packs without pushing to NuGet. Replaces deploy.yml.
- .github/actions/ci-dotnet shared restore + all-TFM Release build.
dependabot.yml: grouped weekly nuget + github-actions updates targeting dev;
semver-majors ignored (taken by hand).
Removed GetBuildVersion.psm1 (dead Azure-DevOps-era snippet) and the SAK
source-control junk PropertyGroup. .gitattributes keeps *.sh / *.yml LF-only
for the Linux runners.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Clears the Node 20 deprecation warning on the runners. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ports the versioning / CI / release system from the
dev-promptproject, adapted for a NuGet library. Not for release — this merges intodevso we can watch CI go green; nothing is published.Branch model
dev— long-lived integration branch. Feature branches, Dependabot, and contributor PRs all target it.master— release branch. Adev → mastermerge cuts exactly one release. That PR is the deliberate "ship it".Versioning —
scripts/compute-version.shYYYY.(MM*100+DD).BUILD, e.g.2026.909.1.build= highest same-day tag + 1, else 1). Nothing is hand-incremented or committed.dotnet pack -p:Version=— no file is mutated.csproj<Version>is now a0.0.0-devplaceholder.2023.11.01, …);dev-promptuses a leadingv— the one intentional deviation.Workflows
ci.ymlmasterordevcheckjob — set this as the required status check onmaster. Replacesbuild-check.yml.ci-dev.ymldevrelease.ymlmaster, or manual dispatchdotnet pack→ push to NuGet → GitHub Release (creates the tag) → Discord. Skips on[skip release]and doc-/CI-only changes. Manual draft run packs + attaches the.nupkgwithout pushing to NuGet. Replacesdeploy.yml..github/actions/ci-dotnetDependabot —
.github/dependabot.ymlGrouped weekly updates (one PR per ecosystem),
nuget+github-actions, targetingdev. semver-major updates are ignored — those need code changes and are taken by hand (this is what keeps consumers safe: no surpriseMicrosoft.IdentityModel7/8 orExtensions.*9 landing unreviewed).Also
GetBuildVersion.psm1(dead Azure-DevOps-era snippet, wired to nothing) and theScc*"SAK" source-control junkPropertyGroup..gitattributesgains*.sh/*.yml→eol=lfso the shell script and workflows stay LF on Linux runners.Manual steps on GitHub (can't be done from a PR)
dev: Settings → default branch →dev.master: require a PR, require thecheckstatus.deploy.yml):NUGET_API_KEY,DISCORD_WEBHOOK_URL,DISCORD_TEST_WEBHOOK_URL.developbranch.Not in scope
Dependency modernization (net8/net9,
Microsoft.IdentityModel6→8, droppingSystem.Net.Http) is the next PR intodev.dev-prompt'srepo.yml(self-hosted apt/rpm/pacman repo) has no analogue — nuget.org is the distribution channel.🤖 Generated with Claude Code