Release procedure
To make a new release, follow this checklist.
- Make sure the dev branch is merged into the master branch.
- 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 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.
- (pyinstaller only)
- 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)
- Upload the docs to the documentation site.
- Commit with "version bump for release (VERSION NAME)" in the text
- Make a release tag in the repository, copying the change list from the documentation.