Release Checklist
This document provides a check list of steps to take and things to watch out for when preparing a new release of Lewis. It is organized roughly in the order that these things need to be done or checked.
If any issues are found, it is best to start again at the top once they are resolved and the fix is merged.
Preparing for Release
These steps are to prepare for a release on Git, and to commit as a pull request named “Prepare release x.y.z”. This pull request should be merged prior to proceeding to the next section.
Git Milestones
Go to https://github.com/ISISComputingGroup/lewis/milestones
Ensure all issues and PRs included in this release are tagged correctly
Create milestone for next release
Ensure any open issues or PRs not included are tagged for next release
Release Notes
Ensure release notes are up to date against all included changes
If changes to existing devices may be required to update Lewis, include an Update Guide section in the release notes
Include new release notes in
docs/release_notes/
Remove orphan tag from release notes for this release
Update Version
Update
__version__
inlewis/__init__.py
Update
release
indocs/conf.py
Update
version
insetup.py
GitHub Release
Draft release blurb at https://github.com/ISISComputingGroup/lewis/releases
Merge Changes
Merge any changes made in this section into the main branch
Ensure this pull request is also tagged for the current version
Build and Finalize Release
These steps should be taken once the ones in the previous section have been completed.
Build PyPI Package
This should be done in a clean directory.
$ python -m venv build
$ . build/bin/activate
(build) $ git clone https://github.com/ISISComputingGroup/lewis.git
(build) $ cd lewis
(build) $ pip install twine wheel
(build) $ python setup.py sdist bdist_wheel
(build) $ twine check dist/*
(build) $ deactivate
Test PyPI Package
Ideally, .tar.gz
and .whl
produced in previous step should also be shared
with and tested by another developer.
Make sure tests are run in a fresh virtual environment:
$ python -m venv targz
$ . targz/bin/activate
(targz) $ pip install lewis/dist/lewis-X.Y.Z.tar.gz
(targz) $ lewis linkam_t95
...
(targz) $ deactivate
$ python -m venv whl
$ . whl/bin/activate
(whl) $ pip install lewis/dist/lewis-X.Y.Z-py3-none-any.whl
(whl) $ lewis linkam_t95
...
(whl) $ deactivate
Since these are release packages, unit tests aren’t available. Run a few manual tests against the packaged version of Lewis to double check that things still work as expected.
Git Release
Finalize and submit release blurb at: https://github.com/ISISComputingGroup/lewis/releases
Close the current milestone at: https://github.com/ISISComputingGroup/lewis/milestones
Upload PyPI Package
The twine
utility can be used to upload the packages to PyPI:
$ twine upload dist/*
Note: requires a PyPi account and lewis permissions.