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.hs
to 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
development
intorelease
. - 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
development
andrelease
now all point to the same version. - Run
nix flake lock --update-input smos-latest-release
to point the e2e compatibility tests to the newest release. - Get started with all TODO's of the form
TODO[after-release]
.