Skip to content

Add tag_release workflow, Python 3.14, and CI manual trigger#5

Merged
bboe merged 1 commit into
mainfrom
ci-setup
Jun 13, 2026
Merged

Add tag_release workflow, Python 3.14, and CI manual trigger#5
bboe merged 1 commit into
mainfrom
ci-setup

Conversation

@bboe

@bboe bboe commented Jun 13, 2026

Copy link
Copy Markdown
Member

Summary

Sets up CodeSorter's CI/release pipeline, reusing praw-dev's shared release tooling.

CI

  • ci.yml — add workflow_dispatch trigger and Python 3.14 to the test matrix.
  • pyproject.toml — add py314 to tox.envlist and the 3.14 classifier.

Release pipeline

  • CHANGES.rst — adopt praw's changelog format (codesorter follows semantic versioning …) so praw-release operates on it unchanged.
  • prepare_release.yml — bump version + changelog via praw-release bump instead of the bespoke tools/set_version.py. Kept self-contained (the reusable prepare_release needs a praw-dev org App secret CodeSorter doesn't have).
  • tag_release.yml (new) — a thin wrapper calling the shared reusable workflow praw-dev/.github/.github/workflows/tag_release.yml@v1.4.0. That workflow was generalized (Derive prepare_release owner from github.repository_owner in tag_release .github#19) to derive the prepare_release owner from github.repository_owner, so it now works for any org while staying identical for praw/prawcore.
  • Removed tools/{set_version,bump_version,extract_changelog}.py and their dead tools/*.py ruff ignores.

Branch rename

  • Dropped the transitional master trigger from ci.yml, scorecard.yml, and tag_release.yml now that the default branch is main.

Verification

  • Full test suite (15 tests) passes on Python 3.14.4; deps install + import cleanly.
  • Ran the complete praw-release cycle (bump → unreleased → extract-version → changes) against the converted changelog locally.
  • All pre-commit hooks pass on changed files; all workflow YAMLs parse.

Notes

  • tag_release requires release PRs to be merged with a merge commit (not squash), same assumption as praw/prawcore.
  • Reusable workflow pinned to v1.4.0 (9ff8957).

🤖 Generated with Claude Code

@bboe bboe force-pushed the ci-setup branch 3 times, most recently from 8d7f8ee to 0f380f1 Compare June 13, 2026 17:20
CI:
- ci.yml: add workflow_dispatch trigger and Python 3.14 to the test matrix
- pyproject.toml: add py314 tox env and the 3.14 classifier

Release pipeline (reuses the shared praw-dev/.github workflows, like
praw/prawcore):
- CHANGES.rst: adopt praw's changelog format (semantic-versioning intro line)
- prepare_release.yml: call the reusable prepare_release workflow with
  package=codesorter, version_file=const.py, passing the org App secrets
- tag_release.yml: call the reusable tag_release workflow (v1.4.0, which
  derives the prepare_release owner from github.repository_owner)
- remove the bespoke tools/{set_version,bump_version,extract_changelog}.py
  scripts and their now-dead ruff ignores

Drop the transitional `master` branch trigger from ci.yml, scorecard.yml, and
tag_release.yml now that the default branch is `main`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bboe bboe merged commit f41ce57 into main Jun 13, 2026
8 checks passed
@bboe bboe deleted the ci-setup branch June 13, 2026 17:54
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