- Make a release candidate branch and pull request it into master with the following updates:
- Deprecate any stated portion of the API (you can find them by searching the code base for "deprecate")
- Confirm that the PR passes all tests and checks
- Tag the release number:
git tag v<release version>
, e.g.,git tag v1.2.0
- THIS IS NOT THE TAGGED COMMIT WE WILL DISTRIBUTE, IT IS ONLY FOR TESTING
- DO NOT PUSH THIS TAG TO UPSTREAM
- Run
make publish-on-testpypi
- this should "just work" if it does not, fix any issues, retag (
git tag -d
thengit tag
), and try again - note, you need an account on https://test.pypi.org
- this should "just work" if it does not, fix any issues, retag (
- Once successful, delete the tag, and merge the candidate PR into master on Github
- Switch to now updated master branch:
git checkout master
andgit pull upstream master
- Tag the release number:
git tag v<release version>
, e.g.,git tag v1.2.0
setuptools_scm
automatically updates the version number based on the tag- this is now the official tagged commit
- Push the tag upstream:
git push upstream --tags
- Run
make publish-on-pypi
- note, you need an account on https://pypi.org
- this will make wheels that all us to be installed via
pip install
- Make a new release on Github
- Make sure that you choose the same tag name as was used earlier
- Copy the markdown from
RELEASE_NOTES.md
into the release description box
- Update on conda-forge:
- A PR should automatically be opened by the bot after the Github release
- confirm that any new depedencies are added there
- Confirm that the doc page is updated to the latest release: https://aneris-iamc.readthedocs.io/
And that's it! Whew...