Skip to content

Conversation

@dkropachev
Copy link
Collaborator

Add a doc that describes release proccess

Pre-review checklist

  • I have split my patch into logically separate commits.
  • All commit messages clearly explain what they change and why.
  • I added relevant tests for new features and bug fixes.
  • All commits compile, pass static checks and pass test.
  • PR description sums up the changes and reasons why they should be introduced.
  • I have provided docstrings for the public items that I want to introduce.
  • I have adjusted the documentation in ./docs/source/.
  • I added appropriate Fixes: annotations to PR description.

Add a file that describes release proccess
@dkropachev dkropachev self-assigned this Dec 7, 2025
@dkropachev dkropachev requested a review from Lorak-mmk December 7, 2025 07:41
- Tag the commit as `3.29.6-scylla` if publishing docs, and `3.29.6` for the driver if applicable.

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

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

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?

Comment on lines +23 to +26

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.

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?


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?

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.
- 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?

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?


1) Version bump
- Update `cassandra/__init__.py` `__version_info__`/`__version__`.
- 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

1) Version bump
- Update `cassandra/__init__.py` `__version_info__`/`__version__`.
- Add new tag with `-scylla` postfix to `docs/conf.py` `TAGS` and set `LATEST_VERSION`.
- 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.

- List each merged PR since the previous release in the format `* <description> (#<PR-ID>)`.

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)?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants