Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
Release Preparation Guide
=========================

Follow these steps to prepare a new release (example: `3.29.6`):

1) Version bump
- Update `cassandra/__init__.py` `__version_info__`/`__version__`.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

__version__ is generated from __version_info__. How do you want a maintainer to update it?

- Add new tag with `-scylla` postfix to `docs/conf.py` `TAGS` and set `LATEST_VERSION`.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You forgot about DEPRECATED_VERSIONS

- Refresh any user-facing version strings (e.g. `docs/installation.rst`).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The important purpose of such guide is to provide a comprehensive list of such places, to avoid missing some when releasing.


2) Changelog
- Add a new section at the top of `CHANGELOG.rst` with the release date.
- List each merged PR since the previous release in the format `* <description> (#<PR-ID>)`.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really wish we started doing nicer release notes, like we do in Rust Driver, or like Operator team does (https://forum.scylladb.com/t/release-scylladb-operator-1-19-0/5188 )
Just a list of PRs is not very friendly.


3) Dependency/docs metadata
- Update `docs/conf.py` multiversion tag list if new published doc tags are required.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is multiversion tag list? How is it different from things described in step 1 (TAGS, LATEST_VERSION)?

- If documentation styling or assets changed, ensure `uv.lock` (or other doc assets) are refreshed.

4) Tests and validation
- Run unit tests: `uv run pytest tests/unit`.
- Spot-check relevant integration tests if new protocol or cluster behavior was touched.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the added value of that if we run them before merging PRs?

- Build artifacts to confirm packaging still works: `uv run python -m build`.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is that not done by CI?


5) Commit and tag
- Commit with an imperative subject, e.g. `Release 3.29.6: changelog, version and documentation`.
- Tag the commit as `3.29.6-scylla` if publishing docs, and `3.29.6` for the driver if applicable.
Comment on lines +23 to +26

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WDYM? It thought we only used -scylla tags. When do we use tags like 3.29.6?


6) Publish checklist
- Push tags and commit.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe I don't have the latest info, but isn't it worth mentioning that this push should be atomic? Something like git push --atomic origin master 3.26.8-scylla to push commit and tag together

- Publish wheels/sdist to the package index.
- Trigger docs build for the new tag/branch.
Comment on lines +30 to +31

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you elaborate on those points? You told what to do, but not how to do it.
I never had to do that when releasing, it was done automatically. Is that something we need to do manually now?

Loading