Skip to content

Release Checklist

Chris Fonnesbeck edited this page Jan 8, 2021 · 8 revisions

PyMC3 Release workflow

  • make sure that __init__.py specifies the new version number
  • track all relevant issues and PRs via a version-specific milestone
  • make sure that there are no major known bugs that should not be released
  • check that the CI pipelines on master are all green
  • create a Release with the Tag as ´v1.2.3´ and a human-readable title like the ones on previous releases

After the last step, the GitHub Action "release-pipeline" triggers and automatically builds and publishes the new version to PyPI.

Troubleshooting

  • If for some reason, the release must be "unpublished", this is possible by manually deleting it on PyPI and GitHub. HOWEVER, PyPI will not accept another release with the same version number!
  • The release-pipeline has a test-install-job, which could fail if the PyPI index did not update fast enough.

Post-release steps

  • Monitor the update the conda-forge/pymc3-feedstock repository for new PRs. The bots should automatically pick up the new version and open a PR to update it. Manual intervention may be required though (see the repos PR history for examples).
  • create a new "on deck" section in the RELEASE-NOTES.md
  • re-run notebooks with the new release
  • build documentation

Old workflow:

This documents the recommended procedure for creating a new release of PyMC3. Each of the following steps should be executed in order:

  1. Create branch for release, and check out this branch.

  2. Ensure that the example notebooks in docs/source/notebooks run without error.

  3. Update RELEASE-NOTES.md with all important changes since the previous release.

  4. Increment the version number. This is currently located in pymc3\__init__.py.

  5. Test that it installs with pip (with new version number), and run tests:

    • Create a new test virtual environment (or conda environment)
    • activate virtualenv
    python -m pip install -e .
    python -m pip install pytest nose nose-parameterized
    conda install -c conda-forge python-graphviz
    python -m pytest -xv pymc3/tests
  6. Push branch to GitHub and confirm TravisCI test pass.

  7. Merge into master.

  8. Tag release:

    git tag -a <version_number> -m <release_message>
    
  9. Push tag to GitHub:

    git push --tags
    
  10. Release on PyPI:

    python setup.py sdist upload
    python setup.py bdist_wheel upload
  11. Release on CondaForge

    Update meta.yml information.

Clone this wiki locally