Conversation
f1df2d2 to
e37280f
Compare
|
@fresh-borzoni @leekeiabstraction @zhaohaidao Could you please help review this? |
There was a problem hiding this comment.
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) andjusttasks. - 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" |
There was a problem hiding this comment.
it's pitty that fluss has been occupied in crate. So, we have to use another name.
e37280f to
a568525
Compare
There was a problem hiding this comment.
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.
a568525 to
71ce34d
Compare
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
@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
.github/workflows/release_rust.yml
Outdated
| on: | ||
| push: | ||
| tags: | ||
| - "*" |
There was a problem hiding this comment.
nit: Do we wish to release on any tag pushes?
fb2ea62 to
7065e13
Compare
7065e13 to
393976c
Compare
|
@fresh-borzoni Thanks for your review. Comments addressed. |
fresh-borzoni
left a comment
There was a problem hiding this comment.
@luoyuxia TY! LGTM
There was a problem hiding this comment.
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.
|
will merge it and then to improve if has any |
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
HOW_TO_RELEASE.md,docs/creating-a-fluss-rust-release.md(anddocs/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 executablecp ../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/release.sh(existing),scripts/bump-version.sh(bump root Cargo.toml),scripts/dependencies.py+scripts/constants.py(generateDEPENDENCIES.rust.tsvper package via cargo-deny; recursivelist_packages()).just release [version],just bump-version <from> <to>..github/release.ymlfor categorized auto-generated release notes (Added, Fixed, Docs, etc.).docs/generate-release-note.mdsimplified to point at it.${RELEASE_VERSION}. Docs usegit add **/DEPENDENCIES*.tsvfor all modules. License headers added todocs/creating-a-release.mdanddocs/generate-release-note.md.Tests
API and Format
Documentation