When a given commit on the development branch is supposedly ready for release, we go through the following checklist:
- Make sure that the version numbers of each package that's been changed has been updated, using git diff release.
- Make sure that the version number of the data format has been changed if the data format has been changed.
- Make sure that the version number of the API has been changed if the API has been changed.
- Add new release section in the changelog.
- Run stack runhaskell scripts/gen-changelog-release-section.hsto add all the version numbers to the changelog.
- Make sure that CI passes locally using nix flake check.
- Make a release candidate commit.
- Make sure that CI passes remotely.
- Merge developmentintorelease.
- Run the release script to create the appropriate tags: stack runhaskell scripts/make-release-tags.hs.
- Push to github with git push.
- Push the tags with git push --tags
- Make a GitHub release with the contents of the changelog using ./scripts/make-github-release.sh.
- Deploy to production.
- Double-check that developmentandreleasenow all point to the same version.
- Run nix flake lock --update-input smos-latest-releaseto point the e2e compatibility tests to the newest release.
- Get started with all TODO's of the form TODO[after-release].