Making freud Releases

Release Process

Documented below are the steps needed to make a new release of freud.

  1. Create a release branch, numbered according to Sematic Versioning:

git checkout -b release/vX.Y.Z

Changelog

  1. Review headings (Added, Changed, Fixed, Deprecated, Removed) and ensure consistent formatting.

  2. Update the release version and release date from next to vX.Y.Z - YYYY-MM-DD.

Submodules

  1. Update git submodules (optional, but should be done regularly).

Code Formatting

  1. Reformat C++ code with clang-format 6.0:

clang-format -style=file cpp/**/*

Generate Cythonized C++

  1. Rebuild the project with --ENABLE-CYTHON so that the files in freud/*.cpp are updated. Ideally, do this on a system with a relatively clean PATH and a system-provided Python, or else some user paths (including usernames) may be included in the result.

Contributors

  1. Update the contributor list:

git shortlog -sne > contributors.txt

Bump version

  1. Commit previous changes before running bumpversion.

  2. Use the bumpversion package to increase the version number and automatically generate a git tag:

bumpversion patch  # for X.Y.Z
bumpversion minor  # for X.Y
bumpversion major  # for X
  1. Push the release branch to the remote:

git push -u origin release/vX.Y.Z
  1. Ensure that ReadTheDocs and continuous integration pass (you will need to manually enable the branch on ReadTheDocs’ web interface to test it). Then push the tag:

git push --tags

Automatic Builds

  1. Pushing the tag will cause CircleCI to create a release for PyPI automatically (see automation in .circleci/config.yml). Make sure this succeeds – it takes a while to run.

  2. Create a pull request and merge the release branch into the master branch. Delete the release branch on ReadTheDocs’ web interface, since there is now a tagged version.

  3. The conda-forge autotick bot should discover that the PyPI source distribution has changed, and will create a pull request to the conda-forge feedstock. This pull request may take a few hours to appear. If other changes are needed in the conda-forge recipe (e.g. new dependencies), follow the conda-forge documentation to create a pull request from your own fork of the feedstock. Merge the pull request after all continuous integration passes to trigger release builds for conda-forge.

Release Announcement

  1. Verify that ReadTheDocs, PyPI, and conda-forge have been updated to the newest version.

  2. Send a release notification via the freud-users group. Follow the template of previous release notifications.