4.6 KiB
Run the pre-release checklist for this project. Work through all three phases in order, pausing for explicit confirmation at each decision point before proceeding. Never create a branch, commit, tag, or push without approval.
Phase 1 — Determine next release
-
Run
git statusand confirm the working tree is clean and onmaster. If not, stop and report the problem. -
Run
git tag --sort=-v:refnameto list existing tags. Identify the most recent tag matchingv*.*.*-*and extract its stadium codename. -
Read the A–Z stadium table from
CHANGELOG.mdto find the next stadium:- No tags yet: start at
A(first stadium in the table). - Normal case: use the stadium that follows the last used codename alphabetically. If letters were skipped, pick the next after the highest existing codename — do not backfill gaps.
- Last codename is
Z(Zentralstadion): the list is finite. Stop and refer to ADR 0012 for guidance on extending or revisiting the convention.
- No tags yet: start at
-
Read the
[Unreleased]section ofCHANGELOG.mdand infer the version bump using these rules (applied in order — first match wins):- Any entry contains the word BREAKING (case-insensitive), a
BREAKING CHANGE:token in a commit footer, or a!suffix after the commit type/scope (e.g.feat!:orfeat(scope)!:) → major bump - Any
### Addedsubsection has entries → minor bump - Otherwise (only
### Changed,### Fixed,### Removed) → patch bump
- Any entry contains the word BREAKING (case-insensitive), a
-
Compute the next version by applying the bump to the current latest tag's semver (e.g.
v2.1.0-dusseldorf+ minor →2.2.0). -
Present a summary for confirmation before continuing:
- Last tag and stadium
- Next version and stadium codename
- Bump type and the reasoning (what triggered it)
- Proposed tag:
vX.Y.Z-{stadium} - Proposed branch:
release/vX.Y.Z-{stadium}
Wait for explicit approval before proceeding to Phase 2.
Phase 2 — Prepare release branch
-
Create branch
release/vX.Y.Z-{stadium}frommaster. -
Edit
CHANGELOG.md:- Replace
## [Unreleased]with## [X.Y.Z - StadiumName] - YYYY-MM-DD(use today's date; use the stadium's display name from the table, e.g. "Bernabeu", "Centenario"). - Consolidate duplicate subsection headings (e.g. two
### Addedblocks should be merged into one). - Add a new empty
## [Unreleased]section at the top (above the new versioned heading) with the standard subsections. - Update the compare links at the bottom of the file:
[unreleased]→.../compare/vX.Y.Z-{stadium}...HEAD- Add
[X.Y.Z - StadiumName]→.../compare/v{prev-tag}...vX.Y.Z-{stadium}
- Replace
-
Show the full diff of
CHANGELOG.md. -
If
coderabbitCLI is installed, runcoderabbit review --type uncommitted --prompt-onlyon the uncommitted CHANGELOG changes:- If actionable/serious findings are reported, stop and address them before proceeding.
- If only nitpick-level findings, report them and continue.
- If
coderabbitis not installed, skip with a note.
-
Propose this commit message:
docs(changelog): prepare release notes for vX.Y.Z-{stadium} (#issue)Wait for explicit approval before committing.
-
Run
dotnet build --configuration Release— must succeed. -
Run
dotnet test --settings .runsettings— all tests must pass. -
If
dotnet csharpieris available, rundotnet csharpier --check .— must pass (rundotnet csharpier .to auto-fix). Skip with a note if not installed. -
Stage
CHANGELOG.mdand commit using the approved message from step 5. -
Propose opening a PR from
release/vX.Y.Z-{stadium}intomaster. Wait for explicit approval before opening. -
Open the PR with:
- Title:
docs(changelog): prepare release notes for vX.Y.Z-{stadium} - Body summarising what is included in this release.
Phase 3 — Tag and release
-
Wait — do not proceed until the user confirms:
- CI is green
- The PR has been merged into
master
-
Once confirmed, run:
git checkout master && git pull origin masterand show the resulting
git log --oneline -3. -
Propose the annotated tag:
git tag -a vX.Y.Z-{stadium} -m "Release X.Y.Z - StadiumName"Wait for explicit approval before creating the tag.
-
Create the tag, then propose:
git push origin vX.Y.Z-{stadium}Wait for explicit approval before pushing. Remind the user that pushing the tag triggers the CD workflow which will build, publish the Docker image, and create the GitHub Release.