Pillow/RELEASING.md

4.7 KiB

Release Checklist

See https://pillow.readthedocs.io/en/stable/releasenotes/versioning.html for information about how the version numbers line up with releases.

Main Release

Released quarterly on January 2nd, April 1st, July 1st and October 15th.

Point Release

Released as needed for security, installation or critical bug fixes.

  • Make necessary changes in main branch.
  • Update CHANGES.rst.
  • Check out release branch e.g.:
    git checkout -t remotes/origin/5.2.x
    
  • Cherry pick individual commits from main branch to release branch e.g. 5.2.x, then git push.
  • Check GitHub Actions and AppVeyor to confirm passing tests in release branch e.g. 5.2.x.
  • In compliance with PEP 440, update version identifier in src/PIL/_version.py
  • Run pre-release check via make release-test.
  • Create tag for release e.g.:
    git tag 5.2.1
    git push --tags
    
  • Create and check source distribution:
    make sdist
    
  • Create and upload all source and binary distributions
  • Publish the release on GitHub and then:
    git push
    

Embargoed Release

Released as needed privately to individual vendors for critical security-related bug fixes.

  • Prepare patch for all versions that will get a fix. Test against local installations.
  • Commit against main, cherry pick to affected release branches.
  • Run local test matrix on each release & Python version.
  • Privately send to distros.
  • Run pre-release check via make release-test
  • Amend any commits with the CVE #
  • On release date, tag and push to GitHub.
    git checkout 2.5.x
    git tag 2.5.3
    git push origin --tags
    
  • Create and upload all source and binary distributions
  • Publish the release on GitHub and then:
    git push origin 2.5.x
    

Source and Binary Distributions

  • Check the GitHub Actions "Wheels" workflow has passed, including the "Upload release to PyPI" job. This will have been triggered by the new tag.
  • Download the Linux aarch64 wheels created by Travis CI from GitHub releases and copy into dist. Check and upload them e.g.:
    python3 -m twine check --strict dist/*
    python3 -m twine upload dist/Pillow-5.2.0*
    

Publicize Release

Documentation

Docker Images

  • Update Pillow in the Docker Images repository
    git clone https://github.com/python-pillow/docker-images
    cd docker-images
    ./update-pillow-tag.sh [[release tag]]