Skip to content

🔧 build(release): adopt filelock-style automated workflow#420

Merged
gaborbernat merged 2 commits intotox-dev:mainfrom
gaborbernat:release
Feb 12, 2026
Merged

🔧 build(release): adopt filelock-style automated workflow#420
gaborbernat merged 2 commits intotox-dev:mainfrom
gaborbernat:release

Conversation

@gaborbernat
Copy link
Copy Markdown
Member

@gaborbernat gaborbernat commented Feb 12, 2026

The previous release process required manually pushing git tags, which then triggered a simple build-and-publish workflow. This created friction for maintainers and made it difficult to track what changes were included in each release, since the changelog was maintained separately and often fell out of sync with actual releases.

This change adopts the release workflow pattern from filelock, which automates changelog generation from git commit history. 🚀 When triggering a release via GitHub Actions, the workflow extracts PR numbers from commit messages, fetches contributor information from the GitHub API, generates formatted changelog entries, commits the updated docs/changelog.rst, creates the git tag, and publishes to PyPI—all in a single workflow run. The changelog now lives in the Sphinx documentation and uses extlinks (:pr:, :user:) for proper cross-referencing.

Maintainers can now trigger releases by selecting a semver bump level (patch/minor/major) in the GitHub Actions UI rather than manually tagging. ✨ The workflow is idempotent, checking for existing tags and releases to avoid conflicts. The historical CHANGES.rst has been migrated to docs/changelog.rst with full version history from 2.0.0 onwards, ensuring continuity for users who reference the changelog.

@gaborbernat gaborbernat requested a review from ofek as a code owner February 12, 2026 21:59
@gaborbernat gaborbernat changed the title build: adopt filelock-style release workflow 🔧 build(release): adopt filelock-style automated workflow Feb 12, 2026
Migrate from tag-push to workflow_dispatch release process with
automated changelog generation from git commit history.

Changes:
- Add tasks/changelog.py for generating changelog from git/GitHub API
- Replace CHANGES.rst with docs/changelog.rst (full history)
- Update release workflow to generate/commit changelog before tagging
- Add release dependency group (gitpython, pygithub, pyyaml)
- Add Sphinx extlinks for :pr:, :issue:, :user: roles
- Update changelog URL to point to ReadTheDocs

The new workflow allows triggering releases via GitHub Actions with
semver bump selection (patch/minor/major), automatically extracts PR
numbers and contributors from commits, and maintains changelog in the
docs directory.

Signed-off-by: Bernát Gábor <bgabor8@bloomberg.net>
Type checking needs access to gitpython, pygithub, and pyyaml to
resolve imports in tasks/changelog.py.
@gaborbernat gaborbernat merged commit 3bdc4ae into tox-dev:main Feb 12, 2026
29 checks passed
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