-
Notifications
You must be signed in to change notification settings - Fork 587
Release Checklist
David Marin edited this page Apr 11, 2020
·
99 revisions
(You'll want to do all this in a virtualenv so that you can use pip
.)
- ensure that any new packages or non-Python files are added to
setup.py
git diff v0.x.y --name-only --diff-filter=A
- hand-test
- style checks:
- run (in Python 2)
pyflakes $(find mrjob tests -name '*.py')
- run (in Python 2)
pycodestyle mrjob tests --ignore E114,E116,E266,E722,E731,W504,W605 --exclude=examples,test_parse.py,test_spark.py,.#*
- run (in Python 2)
- check
git log
for any contributors we missed:-
git log v0.x.y.. --pretty=format:"%an <%ae>" | sort | uniq | sort -k 2
- (
v0.x.y
is the most recent release)
- (
-
- find files with out-of-date copyright notices and update:
grep -L 2020 $(git diff v0.x.y --name-only mrjob tests setup.py)
- do final code review of diff from last release:
git diff v0.x.y
- use Compare view on GitHub if GitHub's web interface can handle it
- update
CHANGES.txt
- check against version milestone on GitHub
- look at pull requests for the milestone too, and use their numbers when no issue number is available
- check against diff
- check against version milestone on GitHub
- update
docs/whats-new.rst
- make sure new features in docs are called out with
.. versionadded
- update
mrjob.__version__
inmrjob/__init__.py
- update "Stable Version" in
README.rst
to be the current version - build docs, and proofread changes:
pip install -r docs/requirements.txt; python setup.py build_sphinx
- push to GitHub:
git push upstream master
- double-check that tests pass (wait for Travis CI)
- tag on GitHub:
-
git tag -a v0.x.y
(copy tag contents fromCHANGES.txt
) git push upstream v0.x.y
-
- remove files not checked in:
git clean -fdx
(otherwise these may end up in the wheel file we upload to PyPI) - build the library:
pip install wheel
python setup.py sdist bdist_wheel
- upload to Test PyPI (register at test.pypi.org)
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
- verify that README uploaded properly: https://test.pypi.org/project/mrjob/
- also check that Classifiers in the sidebar looks okay
- try installing it:
pip install --no-cache-dir -i https://test.pypi.org/simple/ --upgrade mrjob[aws,google]
- hand test something
pip uninstall mrjob
- upload to real PyPI
twine upload dist/*
- update
mrjob.__version__
inmrjob/__init__.py
to be the next dev version (v0.w.z.dev0
) and push to upstream - close milestone on GitHub for the version you just released
- announce on mrjob Google Group