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.
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.
- Run the release script to create the appropriate tags:
stack runhaskell scripts/make-release-tags.hs.
- Push to github with
- Push the tags with
git push --tags
- Make a GitHub release with the contents of the changelog using
- Deploy to production.
- Double-check that
releasenow all point to the same version.
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