This is a to-do list for every new release. Many steps can be automated with the extras/release.py script.
Prepare
- Fix/close any bugs labeled blocker
Finalize
- Run all the tests:
tox -p all
- Check manually that
setup.py looks up to date (dependencies, version number, packages, etc).
- Add a human-readable summary paragraph to the top of the changelog. Clean up any changelog typos.
- Datestamp the changelog:
release.py datestamp
- Commit the finalized changelog:
git commit -a
Release
- Run
release.py prep. This will:
- Tag the revision:
git tag v1.X.Y
- Build the source distribution:
python setup.py sdist
- Generate the changelog as a Markdown doc for upload as a GitHub release in a file called
changelog.md.
- Bump the version number in
setup.py, __version__ in __init__.py, docs/conf.py, and docs/changelog.rst.
- Look around to make sure everything looks good. Then, commit the new bumped
version:
git commit -a
- Run
release.py publish. This will:
- Push to GitHub:
git push ; git push --tags
- Upload the release:
twine upload ...
- Run
GITHUB_TOKEN=... release.py ghrelease to create a GitHub release with the generated Markdown changelog. This requires the github-release command-line tool and an access token.
This is also a good time to tag and release the other libraries in the beets ecosystem if they've seen any updates. Specifically, this includes pyacoustid, audioread, Confuse, and MediaFile.
Announcement
- Announce on Twitter (@b33ts).
- Announce on Discourse.
- Email mailing list.
The distro packages have their own maintainers. Non-exhaustive list: