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].