Skip to content
Lucas Hoffmann edited this page Dec 12, 2025 · 5 revisions

0. ensure that tests pass

both on GitHub Actions and locally:

python -m unittest
# or
nix flake check

1. update NEWS file.

It should list only user-relevant changes.

2. tag release

git tag -s 0.8 -m "tag v0.8"
git push --tags

3. make release on github

Go to https://github.com/pazz/alot/releases/new

  • use existing tag 0.8 as base
  • use "v0.8" as name
  • description = topmost entry from the NEWS file here.
  • let github generate an automatic listing of changes from the git history

4. sign release files

mkdir tmp && cd tmp
wget https://github.com/pazz/alot/archive/0.8.zip
gpg --armor --detach-sign --local-user patricktotzke 0.8.zip
wget https://github.com/pazz/alot/archive/0.8.tar.gz
gpg --armor --detach-sign --local-user patricktotzke 0.8.tar.gz

Then go to https://github.com/pazz/alot/releases again and attach the *.asc files to the release.

5. publish release on PyPI

  1. check out the tag explicitly so that the version in the dist file is right: git checkout v0.8
  2. generate the python package files: python -m build
  3. check the files: twine check dist/*
  4. upload the files to test.pypi.org: twine upload --repository-url https://test.pypi.org/legacy/ dist/alot-0.8*
  5. upload the files to pypi.org: twine upload --repository-url https://pypi.org/legacy/ dist/alot-0.8*

6. send release mail

A rough template follows below.

Subject: [alot] announcing v0.8
To: notmuch@notmuchmail.org

Hi everyone!

I have just tagged alot v0.8; You can get a tarball here [0].

SUMMARY OF CHANGES
NEWS entry

As usual, a quick hall of fame of recent contributors:
$ git shortlog -s -n 0.7...

New bug reports, feature or pull requests via the projects github page [1]
are always welcome.

Cheers,
P

[0]: https://github.com/pazz/alot/tarball/0.8
[1]: https://github.com/pazz/alot

Clone this wiki locally