-
Notifications
You must be signed in to change notification settings - Fork 26
doc: introduce how to verify a release document #282
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,57 @@ | ||
| <!-- | ||
| Licensed to the Apache Software Foundation (ASF) under one | ||
| or more contributor license agreements. See the NOTICE file | ||
| distributed with this work for additional information | ||
| regarding copyright ownership. The ASF licenses this file | ||
| to you under the Apache License, Version 2.0 (the | ||
| "License"); you may not use this file except in compliance | ||
| with the License. You may obtain a copy of the License at | ||
|
|
||
| http://www.apache.org/licenses/LICENSE-2.0 | ||
|
|
||
| Unless required by applicable law or agreed to in writing, software | ||
| distributed under the License is distributed on an "AS IS" BASIS, | ||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| See the License for the specific language governing permissions and | ||
| limitations under the License. | ||
| --> | ||
|
|
||
| # Apache Fluss™ C++ Bindings (Incubating) | ||
|
|
||
| C++ bindings for Fluss, built on top of the [fluss-rust](../../crates/fluss) client. The API is exposed via a C++ header ([include/fluss.hpp](include/fluss.hpp)) and implemented with Rust FFI. | ||
|
|
||
| ## Requirements | ||
|
|
||
| - Rust (see [rust-toolchain.toml](../../rust-toolchain.toml) at repo root) | ||
| - C++17-capable compiler | ||
| - CMake 3.18+ and/or Bazel | ||
| - Apache Arrow (for Arrow-based APIs) | ||
|
|
||
| ## Build | ||
|
|
||
| From the repository root or from `bindings/cpp`: | ||
|
|
||
| **With CMake:** | ||
|
|
||
| ```bash | ||
| cd bindings/cpp | ||
| mkdir build && cd build | ||
| cmake .. | ||
| cmake --build . | ||
| ``` | ||
|
|
||
| **With Bazel:** | ||
|
|
||
| ```bash | ||
| cd bindings/cpp | ||
| bazel build //... | ||
| ``` | ||
| See [ci.sh](ci.sh) for the CI build sequence. | ||
|
|
||
|
|
||
| ## TODO | ||
|
|
||
| - [] How to introduce fluss-cpp in your own project, https://github.com/apache/opendal/blob/main/bindings/cpp/README.md is a good reference | ||
luoyuxia marked this conversation as resolved.
Show resolved
Hide resolved
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. typo
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Let's remove it in next following pr :) |
||
| - [ ] Add CMake/Bazel install and packaging instructions. | ||
| - [ ] Document API usage and minimal example in this README. | ||
| - [ ] Add more C++ examples (log scan, upsert, etc.). | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| <!-- | ||
| Licensed to the Apache Software Foundation (ASF) under one | ||
| or more contributor license agreements. See the NOTICE file | ||
| distributed with this work for additional information | ||
| regarding copyright ownership. The ASF licenses this file | ||
| to you under the Apache License, Version 2.0 (the | ||
| "License"); you may not use this file except in compliance | ||
| with the License. You may obtain a copy of the License at | ||
|
|
||
| http://www.apache.org/licenses/LICENSE-2.0 | ||
|
|
||
| Unless required by applicable law or agreed to in writing, software | ||
| distributed under the License is distributed on an "AS IS" BASIS, | ||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| See the License for the specific language governing permissions and | ||
| limitations under the License. | ||
| --> | ||
|
|
||
| # Apache Fluss™ Rust Client (Incubating) | ||
|
|
||
| Rust client library for [Apache Fluss™](https://fluss.apache.org/). This crate provides the core client used by the fluss-rust workspace and by the Python and C++ bindings. | ||
|
|
||
| # Todo: move how to use to the first, and how to build to the last, https://github.com/apache/opendal/blob/main/core/README.md | ||
| # is a good reference | ||
luoyuxia marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| ## Requirements | ||
|
|
||
| - Rust (see [rust-toolchain.toml](../../rust-toolchain.toml) at repo root) | ||
| - protobuf (for build) | ||
|
|
||
| ## Build | ||
|
|
||
| From the repository root: | ||
|
|
||
| ```bash | ||
| cargo build -p fluss-rs | ||
| ``` | ||
|
|
||
| ## Quick start and examples | ||
|
|
||
| ## TODO | ||
| - [ ] Expand API documentation and usage examples in this README. | ||
| - [ ] Add more examples for table, log scan, and write flows. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,142 @@ | ||
| <!-- | ||
| Licensed to the Apache Software Foundation (ASF) under one | ||
| or more contributor license agreements. See the NOTICE file | ||
| distributed with this work for additional information | ||
| regarding copyright ownership. The ASF licenses this file | ||
| to you under the Apache License, Version 2.0 (the | ||
| "License"); you may not use this file except in compliance | ||
| with the License. You may obtain a copy of the License at | ||
|
|
||
| http://www.apache.org/licenses/LICENSE-2.0 | ||
|
|
||
| Unless required by applicable law or agreed to in writing, software | ||
| distributed under the License is distributed on an "AS IS" BASIS, | ||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| See the License for the specific language governing permissions and | ||
| limitations under the License. | ||
| --> | ||
|
|
||
| # How to Verify a Release Candidate | ||
|
|
||
| This document describes how to verify a release candidate (RC) of the **Fluss clients** (fluss-rust, fluss-python, fluss-cpp) from the [fluss-rust](https://github.com/apache/fluss-rust) repository. It is intended for anyone participating in the release vote (binding or non-binding) and is based on [Verifying a Fluss Release](https://fluss.apache.org/community/how-to-release/verifying-a-fluss-release/) of the Apache Fluss project, adapted for the fluss-rust source distribution and tooling (Rust, Python, C++). | ||
|
|
||
| ## Validating distributions | ||
|
|
||
| The release vote email includes links to: | ||
|
|
||
| - **Distribution archive:** source tarball (`fluss-rust-${RELEASE_VERSION}-incubating.tgz`) on [dist.apache.org dev](https://dist.apache.org/repos/dist/dev/incubator/fluss/) | ||
| - **Signature file:** `fluss-rust-${RELEASE_VERSION}-incubating.tgz.asc` | ||
| - **Checksum file:** `fluss-rust-${RELEASE_VERSION}-incubating.tgz.sha512` | ||
| - **KEYS file:** [https://downloads.apache.org/incubator/fluss/KEYS](https://downloads.apache.org/incubator/fluss/KEYS) | ||
|
|
||
| Download the archive (`.tgz`), `.asc`, and `.sha512` from the RC directory (e.g. `fluss-rust-0.1.0-rc1/`) and the KEYS file. Then follow the steps below to verify signatures and checksums. | ||
|
|
||
| ## Verifying signatures | ||
|
|
||
| First, import the keys into your local keyring: | ||
|
|
||
| ```bash | ||
| curl https://downloads.apache.org/incubator/fluss/KEYS -o KEYS | ||
| gpg --import KEYS | ||
| ``` | ||
|
|
||
| Next, verify all `.asc` files: | ||
|
|
||
| ```bash | ||
| for i in *.tgz; do echo $i; gpg --verify $i.asc $i; done | ||
luoyuxia marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| ``` | ||
|
|
||
| If verification succeeds, you will see a message like: | ||
|
|
||
| ```text | ||
| gpg: Signature made ... | ||
| gpg: using RSA key ... | ||
| gpg: Good signature from "Release Manager Name (CODE SIGNING KEY) <...@apache.org>" | ||
| ``` | ||
|
|
||
| ## Verifying checksums | ||
|
|
||
| Next, verify the tarball(s) using the provided `.sha512` file(s). Each `.sha512` file lists the expected SHA-512 hash for the corresponding archive; `-c` reads that file and checks the archive. | ||
|
|
||
| **On macOS (shasum):** | ||
|
|
||
| ```bash | ||
| shasum -a 512 -c fluss-rust-${RELEASE_VERSION}-incubating.tgz.sha512 | ||
| ``` | ||
|
|
||
| **On Linux (sha512sum):** | ||
|
|
||
| ```bash | ||
| sha512sum -c fluss-rust-${RELEASE_VERSION}-incubating.tgz.sha512 | ||
| ``` | ||
|
|
||
| If you have multiple archives, run `-c` on each `.sha512` file (or use `shasum -a 512 -c *.sha512` / `sha512sum -c *.sha512`). | ||
|
|
||
| If the verification is successful, you will see a message like this: | ||
|
|
||
| ```text | ||
| fluss-rust-0.1.0-incubating.tgz: OK | ||
| ``` | ||
luoyuxia marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| ## Verifying build | ||
|
|
||
| Extract the source release archive and verify that it builds (and optionally that tests pass). You need **Rust** (see [rust-toolchain.toml](https://github.com/apache/fluss-rust/blob/main/rust-toolchain.toml) for the expected version) and, for full builds, **protobuf** and **Python 3.9+** for bindings. | ||
|
|
||
| ```bash | ||
| tar -xzf fluss-rust-${RELEASE_VERSION}-incubating.tgz | ||
| cd fluss-rust-${RELEASE_VERSION}-incubating | ||
| ``` | ||
|
|
||
| Build the workspace: | ||
|
|
||
| ```bash | ||
| cargo build --workspace --release | ||
| ``` | ||
|
|
||
| For Python bindings, see the project [README](https://github.com/apache/fluss-rust#readme) and [Development Guide](https://github.com/apache/fluss-rust/blob/main/DEVELOPMENT.md). For C++ bindings, see `bindings/cpp/`. | ||
|
|
||
| ## Verifying LICENSE and NOTICE | ||
|
|
||
| Unzip the source release archive and verify that: | ||
luoyuxia marked this conversation as resolved.
Show resolved
Hide resolved
luoyuxia marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| 1. The **LICENSE** and **NOTICE** files in the root directory are correct and refer to dependencies in the source release (e.g. files in the repository such as fonts, CSS, JavaScript, images). | ||
| 2. All files that need it have ASF license headers. | ||
| 3. All dependencies have been checked for their license and the license is ASL 2.0 compatible ([ASF third-party license policy](http://www.apache.org/legal/resolved.html#category-x)). | ||
| 4. Compatible non-ASL 2.0 licenses are documented (e.g. in NOTICE or in dependency audit files such as `DEPENDENCIES*.tsv`). | ||
|
|
||
| The project uses [cargo-deny](https://embarkstudios.github.io/cargo-deny/) for license checks; see [Creating a Fluss Rust Client Release](creating-a-release.md) for how the dependency list is generated before a release. | ||
|
|
||
| ## Testing features | ||
|
|
||
| For any user-facing feature included in a release, we aim to ensure it is functional, usable, and well-documented. Release managers may create testing issues that outline key scenarios to validate; these are open to all community members. | ||
|
|
||
| **Per-language verification:** For **Rust** and **C++**, build from the source release and write your own test cases to verify. For **Python**, the RC is published to **TestPyPI**; install the client from TestPyPI and write your own test cases (e.g. connect, create table, read/write) to verify. Use the README in each component as the entry point: | ||
|
|
||
| - **Rust client:** You can depend on the RC via its git tag (e.g. in your `Cargo.toml`: `fluss-rs = { git = "https://github.com/apache/fluss-rust", tag = "v${RELEASE_VERSION}-rc${RC_NUM}" }`) and build your own test project to verify. Alternatively, build from the source release; see [crates/fluss/README.md](../crates/fluss/README.md). | ||
| - **Python bindings:** See [bindings/python/README.md](../bindings/python/README.md) for how to add the Python client (for an RC, install from **TestPyPI**: `pip install -i https://test.pypi.org/simple/ pyfluss==${RELEASE_VERSION}`); then write test cases to verify. | ||
| - **C++ bindings:** See [bindings/cpp/README.md](../bindings/cpp/README.md) for how to build and link the C++ client; then write test cases to verify. | ||
|
|
||
| ## Incubator release checklist | ||
|
|
||
| If the project is in incubation, the ASF Incubator provides a release checklist. You can refer to it when verifying the release: | ||
|
|
||
| - [Incubator Release Checklist](https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist) | ||
|
|
||
| ## Voting | ||
|
|
||
| Votes are cast by replying to the vote email on the dev mailing list with **+1**, **0**, or **-1**. | ||
|
|
||
| In addition to your vote, it is customary to state whether your vote is **binding** or **non-binding**. Only members of the PPMC and mentors have formally binding votes (and the IPMC on the Incubator general list). If unsure, you can state that your vote is non-binding. See [Apache Foundation Voting](https://www.apache.org/foundation/voting.html). | ||
|
|
||
| It is recommended to include a short list of what you verified (e.g. signatures, checksums, build, tests, LICENSE/NOTICE). This helps the community see what has been checked and what might still be missing. | ||
|
|
||
| **Checklist you can reference in your vote:** | ||
|
|
||
| - [ ] [Validating distributions](#validating-distributions) | ||
| - [ ] [Verifying signatures](#verifying-signatures) | ||
| - [ ] [Verifying checksums](#verifying-checksums) | ||
| - [ ] [Verifying build](#verifying-build) | ||
| - [ ] [Verifying LICENSE and NOTICE](#verifying-license-and-notice) | ||
| - [ ] [Testing features](#testing-features) | ||
| - [ ] [Incubator release checklist](#incubator-release-checklist) (if applicable) | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.