Skip to content

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,.#*
  • 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
  • update docs/whats-new.rst
  • make sure new features in docs are called out with .. versionadded
  • update mrjob.__version__ in mrjob/__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 from CHANGES.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__ in mrjob/__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
Clone this wiki locally