Skip to content

build(release): derive versions and notes from tags and fragments - #3487

Merged
datlechin merged 2 commits into
mainfrom
build/release-version-notes
Oct 17, 2026
Merged

datlechin merged 2 commits into
mainfrom
build/release-version-notes

Conversation

@datlechin

Copy link
Copy Markdown
Member

Why

Tag-driven releases need one place that turns a tag into a version, build and channel, refuses a tag that must not build, and renders notes from changelog fragments. Nothing calls these tools yet.

Change

  • scripts/release/version.py: parse prints version, build ((MAJOR*1000+MINOR)*100+PATCH)*100+R, channel and line. check runs the tag rules and the CI walk, and diffs a borrowed verdict with the change detector.
  • scripts/release/notes.py: assemble, body, feed, lead, critical, whats-new and docs, crediting outside PR authors.
  • towncrier.toml, and scripts/release/requirements.txt pinning towncrier 26.9.0 with hashes.
  • Repo Hygiene runs scripts/release/test_*.py on Python 3.9 in a venv installed with pip --require-hashes.

Verified

The tests pass on Python 3.9 with towncrier installed from the hashed file. Every CHANGELOG.md section rendered by notes.py docs compiles with @mdx-js/mdx.

Not in this PR

  • check reads release-build.yml and the release detector suite, which the Release Build PR adds.
  • The changelog marker, changelog.d/, the fragments and .venv/ in .gitignore land at the cutover.

@datlechin
datlechin merged commit 7a74b41 into main Oct 17, 2026
7 checks passed
@datlechin
datlechin deleted the build/release-version-notes branch October 17, 2026 17:22
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.

1 participant