Skip to content

Bugfix release checklist

James Douglass edited this page Mar 6, 2024 · 3 revisions
  • Create a branch for the release changes:
    git checkout main
    git pull upstream main
    git checkout -b release/X.X.X
    
  • Edit HISTORY.rst for the new release. Replace the "Unreleased Changes" header with the version and release date.
  • Push the changes:
    git commit -m "update HISTORY.rst for X.X.X release"
    git push --set-upstream origin release/X.X.X
    
  • PR origin/release/X.X.X into upstream/main. Wait for checks to pass and PR to be approved and merged.
  • Create a tag for the release and push it to upstream/main:
    git checkout main
    git pull upstream main
    git tag X.X.X
    git push upstream X.X.X
    
  • Wait for the newly triggered Github Actions workflows to complete on main.
  • Download the zipped artifacts from the completed workflow. There should be a wheel for each supported OS/python version combination, named like Wheel for <OS> <python version>.zip, and a single Source distribution.zip.
  • Unzip the downloaded wheel and sdist artifacts. NOTE: Clicking the zipped sdist in Finder will uncompress both the top-level zip and the nested tar.gz. Use unzip instead to preserve the tar.gz.
    • If you have all of the actions-generated artifacts all in a single directory you can unzip them all at once with the following in a bash shell:
      find . -name "*.zip" -exec unzip '{}' \;
      
  • Create a release on Github:
    • On the releases page, click "Draft a new release".
    • Select the new tag in the "Choose a tag" dropdown.
    • Enter the version number as the release title.
    • Copy the version's section from HISTORY.rst into the release description.
    • Attach all the .whl files and the source distribution .tar.gz to the release. NOTE: the release assets "Source code (zip)" and "Source code (tar.gz)" will be automatically added by Github when you publish the release.
    • Publish the release.
  • Create a release on PyPI:
    • Install twine, if not already installed
    • Use twine to upload all the .whl files and the source distribution .tar.gz to PyPI:
      twine upload  --username=__token__ --password="$PYPI_API_TOKEN" <files>
      
  • Announce the release as appropriate. For a bugfix release, an announcement in the #softwareteam channel should be enough.
Clone this wiki locally