Release procedure
To make a new release, follow this checklist.
- Create a new version number and codeword. For the version number, use semantic versioning. This means:
- Version number in MAJOR.MINOR.PATCH format
- append "-alpha" if we are still in alpha
- increment the MAJOR number if backward incompatible changes are introduced
- increment the MINOR number if new, backward compatible changes are introduced OR if deprecating functionality.
- increment the PATCH number if backward compatible bug fixes are introduced
- The version codeword is a helpful mnemonic. We were using a script to generate Rainbow codes, but we've now moved on to Megalithic sites in the UK running through letters of the alphabet and roughly south to north, trying to stick with more memorable names.
- Only increment the name letter for a major release - for example, DRIFT STONES had a minor change, so went to DYNAS COVE rather than (say) EATHORNE.
- Edit PCOT/src/pcot/VERSION.txt to add the new version data, also specifying codename and the date (in ISO 8601, YYYY-MM-DD format).
- Edit PCOT/pyproject.toml to add the new version data (without the codename)
- Run poetry update and poetry install on both Windows and Linux and check PCOT still runs (and that the title bar and About version data is correct)
- Run generate_autodocs.py in mkdocs to get up-to-date autodocs.
- Create a list of the changes by looking at the Git log and add this to PCOT/mkdocs/docs/releases.md under a new section for the new release.
- Update PCOT/mkdocs/docs/roadmap.md
- (pyinstaller only) (we don't do this any more!)
- Make pyInstaller builds for Windows and Linux. Do this by going into the pyInstaller directory on the required platform and running pyinstaller file.spec. Check each build works, fixing if necessary. Note that the splash screen will have been automatically generated by the file.spec file from the VERSION.txt, so if it looks weird, check here.
- Make a MacOS pyInstaller build. This is more complex, and is shown below.
- Upload to the release repo (see below) (not done now we're not using PyInstaller)
- Commit with "version bump for release (VERSION NAME)" in the text (possibly use
git commit --allow-empty) - Upload the docs to the documentation site.
- Make sure the dev branch is merged into the master branch.
- Make a release tag in the repository.
- goto repo on github
- Click on "releases" on the right hand side
- "Draft new release"
- Tag should be in the form "v0.12.0-beta"
- Title should be the full title with codename "v0.12.0-beta JOANEY HOW"
- Copy the markdown description of the new release from releases.md into the release notes
- Set (or not) the pre-release flag
- Push the button!