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. Update the version numbers of each package that's been changed using git diff release.
  2. Update the version number of the data format if the data format has been changed.
  3. Update the version number of the API if the API has been changed.
  4. Add new release section in the changelog.
  5. Run scripts/gen-changelog-release-section.hs to add all the version numbers to the changelog.
  6. Make sure that CI passes.
  7. Make a release candidate commit.
  8. Merge development into testing.
  9. Deploy to testing and wait for the end-to-end tests to pass. If the end-to-end tests don't pass, that means we broke either forward or backward compatibility. In that case we revert testing to the previous release commit and start over with the release checklist.
  10. Merge testing into staging.
  11. Deploy to staging.
  12. Wait for end-to-end tests to pass again.
  13. Merge staging into release.
  14. Run the release script to create the appropriate tags
  15. Make a GitHub release with the contents of the changelog.
  16. Upload the release-zip with static binaries to the artefacts of the GitHub release
  17. Double-check that development, testing, staging and release now all point to the same version.