-
Notifications
You must be signed in to change notification settings - Fork 1.1k
PYTHON-1631 Document new release process #488
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
ShaneHarvey
merged 2 commits into
mongodb:master
from
ShaneHarvey:document-release-process
Sep 22, 2020
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -31,39 +31,74 @@ that changes the major version number. | |
Doing a Release | ||
--------------- | ||
|
||
1. Test releases on Python 2.7 and 3.4+ on Windows, Linux and OSX, | ||
with and without the C extensions. It's generally enough to just run the | ||
tests on 2.7, 3.4 and the latest 3.x version with and without the | ||
extensions on a single platform, and then just test any version on the | ||
other platforms as a sanity check. `python setup.py test` will build the | ||
extensions and test. `python tools/clean.py` will remove the extensions, | ||
and then `python setup.py --no_ext test` will run the tests without | ||
them. You can also run the doctests: `python setup.py doc -t`. | ||
|
||
2. Add release notes to doc/changelog.rst. Generally just summarize/clarify | ||
1. PyMongo is tested on Evergreen. Ensure the latest commit are passing CI | ||
as expected: https://evergreen.mongodb.com/waterfall/mongo-python-driver. | ||
To test locally, ``python setup.py test`` will build the C extensions and | ||
test. ``python tools/clean.py`` will remove the extensions, | ||
and then ``python setup.py --no_ext test`` will run the tests without | ||
them. You can also run the doctests: ``python setup.py doc -t``. | ||
|
||
2. Check Jira to ensure all the tickets in this version have been completed. | ||
|
||
3. Add release notes to doc/changelog.rst. Generally just summarize/clarify | ||
the git log, but you might add some more long form notes for big changes. | ||
|
||
3. Search and replace the "devN" version number w/ the new version number (see | ||
note above). | ||
4. Search and replace the "devN" version number w/ the new version number (see | ||
note above in `Versioning`_). | ||
|
||
5. Make sure version number is updated in setup.py and pymongo/__init__.py | ||
|
||
6. Commit with a BUMP version_number message, eg ``git commit -m 'BUMP 3.11.0'``. | ||
|
||
7. Tag w/ version_number, eg, ``git tag -a '3.11.0' -m '3.11.0' <COMMIT>``. | ||
|
||
4. Make sure version number is updated in setup.py and pymongo/__init__.py | ||
8. Push commit / tag, eg ``git push && git push --tags``. | ||
|
||
5. Commit with a BUMP version_number message. | ||
9. Pushing a tag will trigger a release process in Evergreen which builds | ||
wheels and eggs for manylinux, macOS, and Windows. Wait for these jobs to | ||
complete and then download the "Release files" archive from each task. See: | ||
https://evergreen.mongodb.com/waterfall/mongo-python-driver?bv_filter=release | ||
prashantmital marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
6. Tag w/ version_number | ||
Unpack each downloaded archive so that we can upload the included files. For | ||
the next steps let's assume we unpacked these files into the following paths:: | ||
|
||
7. Push commit / tag. | ||
$ ls path/to/manylinux | ||
pymongo-<version>-cp27-cp27m-manylinux1_i686.whl | ||
... | ||
pymongo-<version>-cp38-cp38-manylinux2014_x86_64.whl | ||
$ ls path/to/mac/ | ||
pymongo-<version>-cp27-cp27m-macosx_10_14_intel.whl | ||
... | ||
pymongo-<version>-py2.7-macosx-10.14-intel.egg | ||
$ ls path/to/windows/ | ||
pymongo-<version>-cp27-cp27m-win32.whl | ||
... | ||
pymongo-<version>-cp38-cp38-win_amd64.whl | ||
|
||
8. Push source to PyPI: `python setup.py sdist upload` | ||
10. Build the source distribution:: | ||
prashantmital marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
9. Push binaries to PyPI; for each version of python and platform do:`python | ||
setup.py bdist_egg upload`. Probably best to do `python setup.py bdist_egg` | ||
first, to make sure the egg builds properly. We also publish wheels. | ||
`python setup.py bdist_wheel upload`. | ||
$ git clone [email protected]:mongodb/mongo-python-driver.git | ||
$ cd mongo-python-driver | ||
$ git checkout "<release version number>" | ||
$ python3 setup.py sdist | ||
|
||
10. Make sure to push a build of the new docs (see the apidocs repo). | ||
This will create the following distribution:: | ||
|
||
11. Bump the version number to <next version>.dev0 in setup.py/__init__.py, | ||
$ ls dist | ||
pymongo-<version>.tar.gz | ||
|
||
11. Upload all the release packages to PyPI with twine:: | ||
|
||
$ python3 -m twine upload dist/*.tar.gz path/to/manylinux/* path/to/mac/* path/to/windows/* | ||
|
||
12. Make sure the new version appears on https://pymongo.readthedocs.io/. If the | ||
new version does not show up automatically, trigger a rebuild of "latest": | ||
https://readthedocs.org/projects/pymongo/builds/ | ||
|
||
13. Bump the version number to <next version>.dev0 in setup.py/__init__.py, | ||
commit, push. | ||
|
||
12. Announce! | ||
14. Publish the release version in Jira. | ||
|
||
15. Announce the release on: | ||
https://developer.mongodb.com/community/forums/c/community/release-notes/ |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.