Smos Logo Smos

A comprehensive self-management system

Release checklist

A checklist of what to do when we are ready to make a new release

When a given commit on the development branch is supposedly ready for release, we go through the following checklist:

  1. Make sure that the version numbers of each package that's been changed has been updated, using git diff release.
  2. Make sure that the version number of the data format has been changed if the data format has been changed.
  3. Make sure that the version number of the API has been changed if the API has been changed.
  4. Add new release section in the changelog.
  5. Run stack runhaskell scripts/gen-changelog-release-section.hs to add all the version numbers to the changelog.
  6. Make sure that CI passes locally using nix flake check.
  7. Make a release candidate commit.
  8. Make sure that CI passes remotely.
  9. Merge development into release.
  10. Run the release script to create the appropriate tags: stack runhaskell scripts/make-release-tags.hs.
  11. Push to github with git push.
  12. Push the tags with git push --tags
  13. Make a GitHub release with the contents of the changelog using ./scripts/make-github-release.sh.
  14. Deploy to production.
  15. Double-check that development and release now all point to the same version.
  16. Run nix flake lock --update-input smos-latest-release to point the e2e compatibility tests to the newest release.
  17. Get started with all TODO's of the form TODO[after-release].