This is a dstack release guide and checklist for core maintainers.
- Test
master:- Compare changes to the previous release, e.g.
https://github.com/dstackai/dstack/compare/0.19.39...master. - Test that
masterCLI works with the previous server release. PRs that add new model fields can potentially break client backward compatibility. - Test that
masterserver works with the previous CLI release. - Pay special attention to releases with DB migrations. See MIGRATIONS.md.
- Ensure migrations work with rolling deployments and do not lock multiple tables.
- Test applying migrations while old replicas do active processing.
- Test migrations can be retried if they fail. For example, concurrent index may fail and stay in invalid state.
- Compare changes to the previous release, e.g.
- Create a tag, e.g.
git tag 0.19.40. - Push the tag to trigger the Release
workflow, i.e.git push --tags. - Generate GitHub release notes from the tag. Highlight major features, deprecations, breaking changes.
- Install the release build and test once again, e.g.
uv pip install 'dstack[all]==0.19.40' --refresh. - Release
dstackSky anddstackEnterprise. - Publish the release notes and make announcements.
- If a release workflow fails due to a release workflow mistake and the release build is not published, commit a fix and update the tag reference:
git tag -d 0.19.40 && git tag 0.19.40 && git push --tags -f. - If a critical bug is found after the release is published, make a new release. In an extreme case, the broken release can be yanked.