Skip to content

build: add how to release doc#268

Merged
luoyuxia merged 6 commits intoapache:mainfrom
luoyuxia:create-release-guide
Feb 8, 2026
Merged

build: add how to release doc#268
luoyuxia merged 6 commits intoapache:mainfrom
luoyuxia:create-release-guide

Conversation

@luoyuxia
Copy link
Contributor

@luoyuxia luoyuxia commented Feb 7, 2026

Purpose

Add release documentation and tooling so the project can perform ASF-compliant releases: step-by-step guides, dependency list generation, version bump and release scripts, and GitHub release note configuration.

Linked issue

Closes #210

Brief change log

  • Docs: HOW_TO_RELEASE.md, docs/creating-a-fluss-rust-release.md (and docs/creating-a-release.md) with full flow: decide → prepare → build RC → vote → finalize → promote. Prepare includes: env vars, optional DISCUSS, generate dependencies list (cargo-deny + script), create release branch, bump version on main, optional PRs for blog/download page. Build RC: checkout + tag + push, create artifacts (just release), stage to SVN dev, with directly executable cp ../dist/.... Finalize: SVN dev→release, verify crates.io/PyPI, GitHub Release with official download link and verification steps, CHANGELOG. Promote: merge website PRs, announce (template with download + KEYS links).
  • Scripts: scripts/release.sh (existing), scripts/bump-version.sh (bump root Cargo.toml), scripts/dependencies.py + scripts/constants.py (generate DEPENDENCIES.rust.tsv per package via cargo-deny; recursive list_packages()). just release [version], just bump-version <from> <to>.
  • Release notes: .github/release.yml for categorized auto-generated release notes (Added, Fixed, Docs, etc.). docs/generate-release-note.md simplified to point at it.
  • Misc: Commit message for dependency list includes ${RELEASE_VERSION}. Docs use git add **/DEPENDENCIES*.tsv for all modules. License headers added to docs/creating-a-release.md and docs/generate-release-note.md.

Tests

API and Format

Documentation

@luoyuxia
Copy link
Contributor Author

luoyuxia commented Feb 7, 2026

@fresh-borzoni @leekeiabstraction @zhaohaidao Could you please help review this?

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds end-to-end release documentation and automation for publishing Fluss client artifacts (Rust crate + Python wheels/sdist) and generating ASF-compliant source release artifacts.

Changes:

  • Added comprehensive release documentation (release process + generating GitHub release notes).
  • Added release/helper scripts (release.sh, bump-version.sh, dependency list generator) and just tasks.
  • Added GitHub Actions workflows for Rust (crates.io) and Python (PyPI/TestPyPI) releases, plus GitHub release-notes configuration.

Reviewed changes

Copilot reviewed 17 out of 18 changed files in this pull request and generated 13 comments.

Show a summary per file
File Description
scripts/release.sh Creates source tarball + checksum + GPG signature under dist/.
scripts/bump-version.sh Automates bumping the root workspace version.
scripts/constants.py Discovers Cargo packages in the repo for dependency reporting.
scripts/dependencies.py Runs cargo deny checks and generates DEPENDENCIES.rust.tsv files.
justfile Adds just release and just bump-version shortcuts.
docs/creating-a-release.md Full release manager guide (RCs, voting, staging to SVN, finalization).
docs/generate-release-note.md Instructions for GitHub “Generate release notes”.
README.md Adds “Documentation” section linking to dev/release docs.
Cargo.toml Updates workspace metadata and renames the workspace dependency key to fluss-rs.
crates/fluss/Cargo.toml Renames package to fluss-rs and adds workspace metadata fields.
crates/examples/Cargo.toml Switches examples to depend on fluss-rs.
bindings/python/pyproject.toml Renames PyPI project to pyfluss and updates metadata/URLs.
bindings/python/Cargo.toml Switches Python binding to depend on fluss-rs via workspace.
bindings/cpp/Cargo.toml Switches C++ binding to depend on fluss-rs via workspace.
.github/workflows/release_rust.yml Adds crates.io publish workflow on tag pushes.
.github/workflows/release_python.yml Adds PyPI/TestPyPI publish workflow on tag pushes.
.github/release.yml Configures GitHub auto-generated release notes categories.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

license.workspace = true
rust-version = { workspace = true }
version = { workspace = true }
name = "fluss-rs"
Copy link
Contributor Author

Choose a reason for hiding this comment

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

it's pitty that fluss has been occupied in crate. So, we have to use another name.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 17 out of 18 changed files in this pull request and generated 10 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 17 out of 18 changed files in this pull request and generated 5 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 17 out of 18 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Contributor

@fresh-borzoni fresh-borzoni left a comment

Choose a reason for hiding this comment

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

@luoyuxia Thank you for the PR.
LGTM overall.
Some comments related python build and also we may wish to consider safety check to avoid scenarios like:

  1. You tag v0.2.0 and push it
  2. But you forgot to run bump-version.sh — Cargo.toml version = "0.1.0"
  3. CI triggers on the v0.2.0 tag, runs cargo publish, and publishes version 0.1.0 to crates.io

on:
push:
tags:
- "*"
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: Do we wish to release on any tag pushes?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

let's limit to v*

@luoyuxia luoyuxia force-pushed the create-release-guide branch from fb2ea62 to 7065e13 Compare February 7, 2026 14:07
@luoyuxia
Copy link
Contributor Author

luoyuxia commented Feb 7, 2026

@fresh-borzoni Thanks for your review. Comments addressed.

Copy link
Contributor

@fresh-borzoni fresh-borzoni left a comment

Choose a reason for hiding this comment

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

@luoyuxia TY! LGTM

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 18 out of 19 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@luoyuxia
Copy link
Contributor Author

luoyuxia commented Feb 8, 2026

will merge it and then to improve if has any

@luoyuxia luoyuxia merged commit 499fa8c into apache:main Feb 8, 2026
19 checks passed
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.

Create a Fluss Client Package Release Page / Documentation

3 participants