|
| 1 | +===================== |
| 2 | +PyMongoArrow Releases |
| 3 | +===================== |
| 4 | + |
| 5 | +Versioning |
| 6 | +---------- |
| 7 | + |
| 8 | +PyMongoArrow's version numbers follow `semantic versioning <http://semver.org/>`_: |
| 9 | +each version number is structured "major.minor.patch". Patch releases fix |
| 10 | +bugs, minor releases add features (and may fix bugs), and major releases |
| 11 | +include API changes that break backwards compatibility (and may add features |
| 12 | +and fix bugs). |
| 13 | + |
| 14 | +In between releases we add .devN to the version number to denote the version |
| 15 | +under development. So if we just released 2.3.0, then the current dev |
| 16 | +version might be 2.3.1.dev0 or 2.4.0.dev0. When we make the next release we |
| 17 | +replace all instances of 2.x.x.devN in the docs with the new version number. |
| 18 | + |
| 19 | +https://www.python.org/dev/peps/pep-0440/ |
| 20 | + |
| 21 | +Release Process |
| 22 | +--------------- |
| 23 | + |
| 24 | +#. Ensure that the latest commit is passing CI on GitHub Actions as expected. |
| 25 | + |
| 26 | +#. Check JIRA to ensure all the tickets in this version have been completed. |
| 27 | + |
| 28 | +#. Add release notes to `doc/source/changelog.rst`. Generally just summarize/clarify |
| 29 | + the git log, but you might add some more long form notes for big changes. |
| 30 | + |
| 31 | +#. Replace the `devN` version number w/ the new version number (see |
| 32 | + note above in `Versioning`_). Make sure version number is updated in |
| 33 | + `pymongoarrow/version.py`. Commit the change and tag the release. |
| 34 | + Immediately bump the version number to `dev0` in a new commit:: |
| 35 | + |
| 36 | + $ # Bump to release version number |
| 37 | + $ git commit -a -m "BUMP <release version number>" |
| 38 | + $ git tag -a "<release version number>" -m "BUMP <release version number>" |
| 39 | + $ # Bump to dev version number |
| 40 | + $ git commit -a -m "BUMP <dev version number>" |
| 41 | + $ git push |
| 42 | + $ git push --tags |
| 43 | + |
| 44 | +#. Download the release assets from the "Python Wheels" Github Workflow, e.g. |
| 45 | +https://github.com/mongodb-labs/mongo-arrow/actions/runs/2060477840. |
| 46 | + |
| 47 | +#. Upload all the release packages to PyPI with twine:: |
| 48 | + |
| 49 | + $ python3 -m twine upload dist/* |
| 50 | + |
| 51 | +#. Make sure the new version appears on https://mongo-arrow.readthedocs.io/en/latest/. If the |
| 52 | + new version does not show up automatically, trigger a rebuild of "latest": |
| 53 | + https://readthedocs.org/projects/mongo-arrow/builds/ |
| 54 | + |
| 55 | +#. Bump the version number to <next version>.dev0 in version.py, |
| 56 | + commit, push. |
| 57 | + |
| 58 | +#. Publish the release version in Jira. |
| 59 | + |
| 60 | +#. Announce the release on: |
| 61 | + https://www.mongodb.com/community/forums/c/announcements/driver-releases |
| 62 | + |
| 63 | +#. Create a GitHub Release for the tag using https://github.com/mongodb/mongo-arrow/releases/new. |
| 64 | + The title should be "PyMongoArrow X.Y.Z", and the description should contain |
| 65 | + a link to the release notes on the the community forum, e.g. |
| 66 | + "Release notes: mongodb.com/community/forums/t/pymongoarrow-0-1-1-released/104574." |
0 commit comments