Repository navigation
👷 ci(release): move releases onto shared tox-dev workflows - #190
Merged
Merged
Conversation
gaborbernat
force-pushed
the
fix/release-contract
branch
9 times, most recently
from
October 26, 2026 20:58
57f2da7 to
3b822d7
Compare
gaborbernat
force-pushed
the
fix/release-contract
branch
5 times, most recently
from
October 27, 2026 01:57
6afb0da to
3cba1c9
Compare
Adopt github-workflows 6.0.1 for App-backed preparation, tagged package validation, PyPI reconciliation and GitHub Release publication. Release versions come from changelog fragments, and the changelog covers 15 tagged releases with user-facing categories, stable anchors and linked human credits. Prepare runs release-creator contributors, so credits come from commit authors and co-authors; CONTRIBUTING says so. Nab writes pylock.toml from a [tool.nab] table: every declared group, the runtime dependencies and a build group that adds Cython and setuptools, because PyYAML has no CPython 3.15 wheel. The release-* groups require release-creator 4.1, and 4.1.0 enters through a temporary upload cutoff exception. The unused release, release-check and release-validate groups are gone. The tag workflow renders the notes in a read-only job next to the build, publishes to PyPI without skipping existing files, verifies the PyPI digests and creates the GitHub Release with one call. Release writers are trusted, so the tag re-check before the GitHub Release and the redundant pull_request condition on the news job are dropped. Jobs hand off the distributions and the notes by artifact ID, and the workflow runs under a per-tag concurrency group. Dependabot's pre-commit ecosystem and pre-commit.ci's quarterly autoupdate take over hook updates, so the hook cooldown check, its scheduled rerun and the release-creator managed hook pins are gone. Every workflow, job and step gets an emoji-prefixed name, which renames the required checks to "🚦 Required checks pass" and "📝 News fragment". CodeQL moves from default setup to a committed advanced workflow on ubuntu-26.04 that scans actions and python with security-extended and skips tests.
gaborbernat
force-pushed
the
fix/release-contract
branch
from
October 27, 2026 04:00
3cba1c9 to
80b4045
Compare
gaborbernat
marked this pull request as ready for review
October 27, 2026 05:39
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.
Releasing
pre-commit-uvtoday means typing a version string into a hand-written prepare workflow, and the tag workflow carries its own build, notes and publish scripts that no other tox-dev project shares. This PR moves both onto tox-dev/github-workflows 6.0.1 and release-creator 4.1.0. 🚀 A maintainer now picksauto,major,minororpatch, andautoderives the version from the news fragments:breakinggives a major,featurea minor, anything else a patch.Release flow
Prepare release calls the shared Towncrier workflow. It builds
CHANGELOG.mdfromchangelog.d, adds new contributors from commit authors and co-authors withrelease-creator contributors, and pushes the release commit and tag through the release App, whose key stays in therelease-authenvironment. The tag workflow builds the distributions in the shared build workflow while a read-only job renders the GitHub Release notes from the tagged changelog. PyPI gets the files through trusted publishing; a separate job compares PyPI's digests with the built files, and the GitHub Release is created last, from the rendered notes.flowchart LR Prepare[Prepare release] -->|commit + tag| Tag((tag)) Tag --> Build[🏗️ Build] Tag --> Notes[📝 Render notes] Build --> PyPI[🚀 Publish to PyPI] Notes --> PyPI PyPI --> Verify[🔍 Verify PyPI digests] Verify --> GHR[🚀 GitHub Release] Notes --> GHR classDef shared fill:#cfe4ff,stroke:#1f6feb,color:#0b1f3a; classDef local fill:#d8f3dc,stroke:#2d6a4f,color:#0b2e1a; class Prepare,Build shared; class Notes,PyPI,Verify,GHR,Tag local;Release writers are trusted, so the tag workflow no longer re-checks the tag's version shape or its changelog section before building. The news check moves to its own workflow on the shared
validate-newsaction, which since 6.0.0 runs each check only when the pull request touches the files it covers; the fragment requirement for human pull requests runs on every pull request.Changelog and packaging
This PR rewrites the changelog's 15 tagged releases from GitHub's What's Changed lists into user-facing categories with stable anchors, pull request links and linked credits. CONTRIBUTING (new) explains how to write fragments and that credits come from commit authors, never from the fragment. On PyPI the project description now links
CHANGELOG.mdandCONTRIBUTING.mdto GitHub instead of relative paths that break there, and the metadata gains an SPDX license, thehooks,pre-commitanduvkeywords in place offormatandpyproject, and topic classifiers.Nab writes
pylock.tomlfrom a[tool.nab]table with a seven-day upload cutoff, and a weekly shared workflow opens a pull request with the refreshed lock. The lock carries every dependency group plus abuildgroup with Cython and setuptools, since PyYAML 6.0.3 has no CPython 3.15 wheel.release-creator4.1.0 enters through a temporary per-package cutoff exception.Hook updates move to Dependabot's
pre-commitecosystem and pre-commit.ci's quarterly autoupdate, with hook revisions frozen to commit SHAs. Dependabot waits seven days before proposing an action or hook update. Every workflow, job and step now has an emoji-prefixed name.🛡️ CodeQL
CodeQL moves from default setup to a committed workflow on
ubuntu-26.04that scansactionsandpythonwith thesecurity-extendedsuite and skipstests, so fixtures raise no alerts. It also removes theubuntu-latestmigration notice default setup produces.