Release Process

This page outlines the process for creating a new Fairlearn release. The following steps assume git remote’s origin points to fairlearn/fairlearn (in practical terms, that the work is being done on a clone of fairlearn/fairlearn and not on a fork).

  1. Ensure the maintainers listed in scripts/generate_maintainers_table.py are up to date. Run python scripts/generate_maintainers_table.py from the repository root directory. If the generated file docs/about/maintainers.rst does not change you can proceed with the next step. Otherwise, create PR to update the generated maintainers file on the main branch. Proceed only when the PR is merged.

  2. Check the docs/user_guide/installation_and_version_guide for a file related to the release. Make sure formatting and contents are correct and create a summary of the highlights at the top of the file. Create a PR for this and merge it before proceeding.

  3. Create the branch for the release:

    git checkout -b release/v<x.y.z>

  4. Push the branch to GitHub:

    git push -u origin release/v<x.y.z>

  5. On the release branch, create a PR to update the version in __init__.py to x.y.z

  6. Merge that PR.

  7. Run the release pipeline

    1. Ensure that you have selected the correct release branch

    2. Run first on ‘Test’ which will upload to <https://test.pypi.org>

    3. Finally, run the release pipeline set to ‘Production’ which will upload to <https://pypi.org/>

  8. On the release branch, place an annotated tag:

    git tag -a v<x.y.z> -m "v<x.y.z> release"

  9. Push the tag to GitHub:

    git push origin v<x.y.z>

  10. On GitHub’s release page there should be a new release named v<x.y.z>. Open it and post the changes from CHANGES.md into the description, then hit “publish”.

  11. On the main branch, create a PR to:

    1. Update the version in __init__.py to x.y.z+1.dev0

    2. Update the version in docs/static_landing_page/js/landing_page.js so that all the links point to the new release

    3. Update smv_tag_whitelist in docs/conf.py to show only the latest patch version of every minor release.

    4. Create a new file vx.y.z+1.rst in docs/user_guide/installation_and_version_guide

Note

Make sure to add a note to this second PR: “Do not merge until the release is completed. Otherwise a new website will be published that points to the new version which doesn’t exist yet.”

  1. Merge that PR.