Repository navigation
馃懛 ci(release): adopt shared release workflow - #275
Draft
gaborbernat wants to merge 1 commit into
Draft
gaborbernat wants to merge 1 commit into
gaborbernat wants to merge 1 commit into
Conversation
gaborbernat
force-pushed
the
fix/release-contract
branch
6 times, most recently
from
October 26, 2026 16:58
2f6547b to
6226580
Compare
Prepare releases from Towncrier fragments through github-workflows 6.0.0 and publish the tag with the shared Python release workflow. The changelog gets user-facing categories, stable anchors and author credits for the 19 tagged sections, and a CONTRIBUTING guide explains fragments and how credits come from commit authors and co-authors. Nab writes pylock.toml for every group from a [tool.nab] table on CPython 3.15 linux_x86_64, with a temporary upload cutoff exception for release-creator 4.0.0. A build group locks the hatchling backend with Cython and setuptools, because PyYAML has no CPython 3.15 wheel. The unused release, release-check and release-validate groups are gone. The tag workflow runs under a per-tag concurrency group. A read-only notes job renders the changelog section in parallel with the build. PyPI uploads no longer skip existing files. One job then verifies the PyPI digests and creates the GitHub Release. Checks that only a writer could defeat are dropped: the tag re-check before the GitHub Release, the main-branch condition on prepare, and the pull_request condition that repeated news.yaml's only trigger. Every job and step carries an emoji name. The required checks become "馃殾 Required checks pass" and "馃摑 News fragment". Dependabot's pre-commit ecosystem and pre-commit.ci's quarterly autoupdate handle hook updates, so there is no hook cooldown check.
gaborbernat
force-pushed
the
fix/release-contract
branch
from
October 26, 2026 17:12
6226580 to
ba1cff9
Compare
This branch has not been deployed
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.
This draft moves pytest-print onto the shared release flow from github-workflows 6.0.0 and release-creator 4.0.0. Releases are prepared from Towncrier fragments: release-creator picks the version, assembles the changelog, adds a New Contributors subsection, and pushes an App-authored commit and tag. The 19 tagged changelog sections get user-facing categories, stable anchors and author credits, and a new
CONTRIBUTING.mdexplains how to write fragments and why they carry no hand-written credits: credits come from commit authors and co-authors.The tag workflow runs under a per-tag concurrency group. The shared
validate-python-releaseworkflow builds the wheel and sdist, while a read-only notes job renders the changelog section in parallel. PyPI publishing goes through OIDC and no longer skips existing files. A single job then reconciles the PyPI digests and attestations and creates the GitHub Release with onepublish-github-releasecall. GitHub's generated notes and the separate draft stage are gone.Checks that guard only against a writer are removed. The tag workflow no longer re-checks that the tag still names the release commit before the GitHub Release, since only a writer can move a tag. Prepare no longer requires
refs/heads/main, because only writers can dispatch it; the fork guard ongithub.repositorystays.news.yamldrops thepull_requestcondition that repeated its only trigger, and therelease-validategroup goes with the shared prepare job that installed it. gw 6.0.0 itself drops the lock, tag and patch re-checks it used to run invalidate-python-releaseandprepare-towncrier-release.Every job and step now has an emoji name, for example
馃殾 Required checks pass,馃摑 News fragmentand馃殌 Publish GitHub Release.pylock.tomlnow comes from Nab 0.0.22 and covers every group and extra on CPython 3.15linux_x86_64, locking release-creator 4.0.0. The[tool.nab]table carries a temporaryuploaded-prior-toexception for release-creator, to be deleted after 2026-11-02. Abuilddependency group locks the hatchling backend together with Cython and setuptools, because PyYAML has no CPython 3.15 wheel. The unusedrelease,release-checkandrelease-validategroups are removed. Tests still resolve fresh.Hook updates move to Dependabot's
pre-commitecosystem with a seven-day cooldown, and pre-commit.ci autoupdates quarterly. The hook cooldown check and its scheduled rerun are removed, so馃殾 Required checks passonly aggregates the test matrix.The App key and client ID are staged in the main-only
release-authenvironment. A pytest-dev administrator still needs to install the repo-only App and configure its ruleset bypass before a release.Before merging, the
mainruleset's required checks must follow the renames:Required checks passbecomes馃殾 Required checks pass, andchangelogbecomes馃摑 News fragment.pre-commit.ci - pris an external app check and keeps its name.swap_required_checks.py pytest-dev/pytest-print 275 --applymakes the swap right before the merge.