Skip to content

Creating a Release

Joshua A. Anderson edited this page Oct 28, 2024 · 19 revisions

Checklist

Pre-release

  • Review open pull requests, issues, and milestones. Before making a release, every issue or pull request assigned to that release version should be completed or moved to a later milestone. Additionally, all resolved issues and merged pull requests since the last release should be assigned to the current milestone. Some exceptions can be made for simplicity, e.g. automated updates from Dependabot don't need to be assigned to the milestone.
  • Create release branch named release/X.Y.Z, numbered according to Semantic Versioning (see commands below).
  • Finalize changelog entries (review recent commits and pull requests to ensure completeness).
    • The changelog headers are Added, Fixed, Changed, Deprecated, and Removed (in that order).
  • Update version and release date in changelog from next to vX.Y.Z - YYYY-MM-DD.
  • Update git submodules in the extern directory (code example below).
  • Update freud-examples submodule in doc/source/gettingstarted/examples (code example below).
    • All significant new features should have examples.
  • Review Python version support (such as adding CI builds for new versions, dropping old versions no sooner than allowed by NEP 29).
  • Make sure that installation instructions are up to date (check dependencies).
  • Update the pinned dependencies in doc/readthedocs-env.yml to the latest versions and ensure that the documentation builds as expected on readthedocs.

Release

  • Merge main into release branch.
  • Bump version with bumpversion [patch|minor|major] command. Bumpversion is configured NOT to make a tag. The tag will be made when the GitHub release is published.
  • Push release branch.
  • Create a pull request for the release branch.
  • Merge the release branch's pull request into main.
  • Switch to the main branch, tag the release, and push the tag.

Post-release

  • Update conda-forge feedstock. A pull request will be automatically created by the conda-forge autotick bot within a few hours. However, the recipe must be manually updated if dependencies have changed since the last release.
  • Verify that ReadTheDocs, PyPI, and conda-forge have been updated to the newest version.
    • conda-forge may take 1 hour or so after the feedstock PR is merged for the CDN to update.
  • Notify the Glotzer group via Slack and post the changelog on the freud-users Google Group. Follow the template from previous release notifications.

Create release branch

git fetch origin
git checkout main
git pull
git switch -c release/X.Y.Z
git push -u origin release/X.Y.Z

How to update submodules

Example for the freud-examples submodule:

# Update freud-examples submodule:
cd doc/source/gettingstarted/examples
git pull
git checkout main
# Then go to the repository root and commit the changes.
Clone this wiki locally