New release (How to) - Materials-Consortia/OPTIMADE GitHub Wiki
Release instructions
Pre-release checklist
- Check AUTHORS is up to date
- Update the CHANGELOG
- Spellcheck the new specification text with
make spelland interactively add any new words to the wordlist withmake fix_spelling - Review changes since the last versions and decide whether the new version number is appropriate
- Ideally release 1 or 2 release candidates in the weeks/months before the main release
- Check the HTML build of the specification and update the
gh-pagesbranch to point to the latest release
Release procedure
develop: Merge PRs that should go into the release.- Check that the specification is internally consistent and "ready for release".
- Ensure that the
./schemas,CHANGELOGandAUTHORShave been updated for the new release.
develop: Create PR that updates the version at the top ofoptimade.rst. Merge this PR againstdevelopas the last thing before releasing.master: Merge thedevelopbranch into themasterbranch:- Create PR on GitHub (Link).
- Use
giton your local machine to mergedevelopintomasteronce all CI checks have passed.- Fetch all (
git fetch --all -p). - Checkout
master(git checkout master, if you have never checked outmaster, first dogit branch master origin/develop, iforiginis the remote forMaterials-Consortia/OPTiMaDe). - Run
git merge --ff-only origin/develop. - If this was successful, push to
origin, i.e.,git push(this may require temporarily disabling branch protections onmaster). Note: If this was not successful, you should merge a "fixing" PR intodevelopthat makes it possible to merge using fast-forwarding (ff).
- Fetch all (
master: Use the GitHub interface to create a release on the latest commit inmasterwith the new version number, e.g.v1.0.0. (Make sure to select to tagmasteras the UI will default todevelop.) This will create a tag in the git repository.develop: Create a PR that updates the version string at the top ofoptimade.rstin thedevelopbranch to add the suffix~developto the version number. (Note: this intentionally breaks semantic versioning for non-released develop versions.)- Archive the released specification text on Zenodo as a new version of https://doi.org/10.5281/zenodo.4195050 (currently only @ml-evs can do this -- if you are reading this in 100 years then i) I am dead, ii) hopefully Zenodo would have added support for organizational control of records)
Note: For historical reasons, versions v0.9.6 and v0.9.7 were never released/tagged.
By default, however, it is understood that the version number should only be increased after a new release has been made.
Ideally, release candidates suffixed with -rc.<n> should be made available for provider implementation before the official release.
These should be considered as a feature freeze, but implementation details may change slightly in the final release.