This is an automated email from the ASF dual-hosted git repository.
xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opendal.git
The following commit(s) were added to refs/heads/main by this push:
new 2562dfbf4 docs: refresh split release documentation (#7344)
2562dfbf4 is described below
commit 2562dfbf41da609462be2f4375dd609d6e2e2c31
Author: Xuanwo <[email protected]>
AuthorDate: Tue Mar 31 18:41:15 2026 +0800
docs: refresh split release documentation (#7344)
---
website/community/release/release.md | 73 +++++++++++++++++++++++-------------
website/community/release/verify.md | 48 +++++++++++++++---------
2 files changed, 77 insertions(+), 44 deletions(-)
diff --git a/website/community/release/release.md
b/website/community/release/release.md
index 9a1187b03..e77a1d906 100644
--- a/website/community/release/release.md
+++ b/website/community/release/release.md
@@ -75,10 +75,13 @@ Start a [tracking issue on
GitHub](https://github.com/apache/opendal/issues/new?
Update the version list in the `dev/src/release/package.rs` file.
+This file is the source of truth for the split source release layout. Each
entry in this list produces an independent source archive named
`apache-opendal-{package}-{version}-src.tar.gz`.
+
For example:
- If there is any breaking change, please bump the `minor` version instead of
the `patch` version.
-- If this package is not ready for release, please skip.
+- If this package is not ready for release, please skip it from the release
list.
+- Packages that have moved to separate repositories must not be included here.
## GitHub Side
@@ -103,7 +106,7 @@ Running `python3 ./scripts/dependencies.py generate` to
update the dependency li
### Push release candidate tag
-After bump version PR gets merged, we can create a GitHub release for the
release candidate:
+After bump version PR gets merged, push the release candidate tag:
- Create a tag at `main` branch on the `Bump Version` / `Patch up version`
commit: `git tag -s "v0.46.0-rc.1"`, please correctly check out the
corresponding commit instead of directly tagging on the main branch.
- Push tags to GitHub: `git push --tags`.
@@ -111,17 +114,18 @@ After bump version PR gets merged, we can create a GitHub
release for the releas
:::note
-Pushing a Git tag to GitHub repo will trigger a GitHub Actions workflow that
creates a staging Maven release on https://repository.apache.org which can be
verified on voting.
+Pushing an RC tag to GitHub will trigger the tag-based release workflows. In
the current flow, this includes the Java staging artifacts on
https://repository.apache.org and dry-run checks for other released packages.
:::
### Check the GitHub action status
-After pushing the tag, we need to check the GitHub action status to make sure
the release candidate is created successfully.
+After pushing the tag, check the GitHub action status to make sure the RC
workflows finished successfully.
-- Python: [Bindings Python
CI](https://github.com/apache/opendal/actions/workflows/ci_bindings_python.yml)
+- Rust packages: [Release Rust
Packages](https://github.com/apache/opendal/actions/workflows/release_rust.yml)
- Java: [Bindings Java
CI](https://github.com/apache/opendal/actions/workflows/ci_bindings_java.yml)
and [Bindings Java
Release](https://github.com/apache/opendal/actions/workflows/release_java.yml)
-- Node.js: [Bindings Node.js
CI](https://github.com/apache/opendal/actions/workflows/ci_bindings_nodejs.yml)
+- Node.js: [Bindings Node.js
CI](https://github.com/apache/opendal/actions/workflows/ci_bindings_nodejs.yml)
and [Release NodeJS
Binding](https://github.com/apache/opendal/actions/workflows/release_nodejs.yml)
+- Docs: [Docs](https://github.com/apache/opendal/actions/workflows/docs.yml)
In the most cases, it would be great to rerun the failed workflow directly
when you find some failures. But if a new code patch is needed to fix the
failure, you should create a new release candidate tag, increase the rc number
and push it to GitHub.
@@ -135,15 +139,17 @@ Additionally, we should also drop the staging Maven
artifacts on https://reposit
### Create an ASF Release
-After GitHub Release has been created, we can start to create ASF Release.
+After the RC tag has been pushed and the required workflows are green, create
the ASF source release artifacts.
- Checkout to released tag. (e.g. `git checkout v0.46.0-rc.1`, tag is created
in the previous step)
- Use the release script to create a new release: `just release`
- - This script will generate the release candidate artifacts under `dist`,
including:
+ - This script will generate the release candidate artifacts under `dist` for
every package listed in `dev/src/release/package.rs`, including:
- `apache-opendal-{package}-{version}-src.tar.gz`
- `apache-opendal-{package}-{version}-src.tar.gz.asc`
- `apache-opendal-{package}-{version}-src.tar.gz.sha512`
-- Push the newly created branch to GitHub
+ - Artifact names use each package's own version. The RC version is only used
for the SVN directory name, such as `0.55.0-rc.1/`.
+ - Each archive contains `LICENSE`, `NOTICE`, the package directory itself,
and any repo-local dependencies needed to build that package from source.
+ - This repository no longer produces a monolithic
`apache-opendal-${opendal_version}-src.tar.gz` artifact or any
`apache-opendal-bin-*` artifacts.
This script will create a new release under `dist`.
@@ -151,21 +157,36 @@ For example:
```shell
dist
-├── apache-opendal-bindings-c-0.44.2-src.tar.gz
-├── apache-opendal-bindings-c-0.44.2-src.tar.gz.asc
-├── apache-opendal-bindings-c-0.44.2-src.tar.gz.sha512
-...
-├── apache-opendal-core-0.45.0-src.tar.gz
-├── apache-opendal-core-0.45.0-src.tar.gz.asc
-├── apache-opendal-core-0.45.0-src.tar.gz.sha512
-├── apache-opendal-integrations-dav-server-0.0.0-src.tar.gz
-├── apache-opendal-integrations-dav-server-0.0.0-src.tar.gz.asc
-├── apache-opendal-integrations-dav-server-0.0.0-src.tar.gz.sha512
-├── apache-opendal-integrations-object_store-0.42.0-src.tar.gz
-├── apache-opendal-integrations-object_store-0.42.0-src.tar.gz.asc
-└── apache-opendal-integrations-object_store-0.42.0-src.tar.gz.sha512
-
-1 directory, 60 files
+├── apache-opendal-bindings-c-${c_version}-src.tar.gz
+├── apache-opendal-bindings-c-${c_version}-src.tar.gz.asc
+├── apache-opendal-bindings-c-${c_version}-src.tar.gz.sha512
+├── apache-opendal-bindings-cpp-${cpp_version}-src.tar.gz
+├── apache-opendal-bindings-cpp-${cpp_version}-src.tar.gz.asc
+├── apache-opendal-bindings-cpp-${cpp_version}-src.tar.gz.sha512
+├── apache-opendal-bindings-java-${java_version}-src.tar.gz
+├── apache-opendal-bindings-java-${java_version}-src.tar.gz.asc
+├── apache-opendal-bindings-java-${java_version}-src.tar.gz.sha512
+├── apache-opendal-bindings-nodejs-${nodejs_version}-src.tar.gz
+├── apache-opendal-bindings-nodejs-${nodejs_version}-src.tar.gz.asc
+├── apache-opendal-bindings-nodejs-${nodejs_version}-src.tar.gz.sha512
+├── apache-opendal-bindings-python-${python_version}-src.tar.gz
+├── apache-opendal-bindings-python-${python_version}-src.tar.gz.asc
+├── apache-opendal-bindings-python-${python_version}-src.tar.gz.sha512
+├── apache-opendal-core-${core_version}-src.tar.gz
+├── apache-opendal-core-${core_version}-src.tar.gz.asc
+├── apache-opendal-core-${core_version}-src.tar.gz.sha512
+├── apache-opendal-integrations-dav-server-${dav_server_version}-src.tar.gz
+├── apache-opendal-integrations-dav-server-${dav_server_version}-src.tar.gz.asc
+├──
apache-opendal-integrations-dav-server-${dav_server_version}-src.tar.gz.sha512
+├── apache-opendal-integrations-object_store-${object_store_version}-src.tar.gz
+├──
apache-opendal-integrations-object_store-${object_store_version}-src.tar.gz.asc
+├──
apache-opendal-integrations-object_store-${object_store_version}-src.tar.gz.sha512
+├── apache-opendal-integrations-parquet-${parquet_version}-src.tar.gz
+├── apache-opendal-integrations-parquet-${parquet_version}-src.tar.gz.asc
+├── apache-opendal-integrations-parquet-${parquet_version}-src.tar.gz.sha512
+├── apache-opendal-integrations-unftp-sbe-${unftp_sbe_version}-src.tar.gz
+├── apache-opendal-integrations-unftp-sbe-${unftp_sbe_version}-src.tar.gz.asc
+└──
apache-opendal-integrations-unftp-sbe-${unftp_sbe_version}-src.tar.gz.sha512
```
### Upload artifacts to the SVN dist repo
@@ -249,9 +270,9 @@ Hello, Apache OpenDAL Community,
This is a call for a vote to release Apache OpenDAL version ${opendal_version}.
-The tag to be voted on is ${opendal_version}.
+The tag to be voted on is v${release_version}.
-The release candidate:
+The release candidate source packages:
https://dist.apache.org/repos/dist/dev/opendal/${release_version}/
diff --git a/website/community/release/verify.md
b/website/community/release/verify.md
index f00457cff..63429430d 100644
--- a/website/community/release/verify.md
+++ b/website/community/release/verify.md
@@ -24,25 +24,30 @@ However, you should clearly state which checks you did. The
release manager need
To verify the release candidate, you need to download the release candidate
from the [dist](https://dist.apache.org/repos/dist/dev/opendal/) directory.
-Our current distribution contains many files, which we recommend downloading
using svn.
+Our current distribution is a directory of split source packages, so we
recommend downloading the whole RC directory with svn.
-Use the following command to download all artifacts, replace
"${release_version}-${rc_version}" with the version ID of the version to be
released:
+Use the following command to download all artifacts, replacing
`${release_version}` with the RC directory name, such as `0.55.0-rc.1`:
```shell
-svn co
https://dist.apache.org/repos/dist/dev/opendal/${release_version}-${rc_version}/
+svn co https://dist.apache.org/repos/dist/dev/opendal/${release_version}
opendal-${release_version}
```
## Checksums and signatures
-Every file in a release candidate should have a checksum and signature file.
+Every source archive in a release candidate should have a checksum and
signature file.
-For example, if the release candidate is `0.46.0-rc1`, the checksum and
signature file should be like:
+For example, if the release candidate directory is `0.55.0-rc.1`, the checksum
and signature files should look like:
```
-https://dist.apache.org/repos/dist/dev/opendal/0.46.0-rc1/apache-opendal-core-0.46.0-rc1-src.tar.gz.sha512
-https://dist.apache.org/repos/dist/dev/opendal/0.46.0-rc1/apache-opendal-core-0.46.0-rc1-src.tar.gz.asc
+https://dist.apache.org/repos/dist/dev/opendal/0.55.0-rc.1/apache-opendal-core-0.55.0-src.tar.gz.sha512
+https://dist.apache.org/repos/dist/dev/opendal/0.55.0-rc.1/apache-opendal-core-0.55.0-src.tar.gz.asc
+https://dist.apache.org/repos/dist/dev/opendal/0.55.0-rc.1/apache-opendal-bindings-java-0.48.2-src.tar.gz.sha512
+https://dist.apache.org/repos/dist/dev/opendal/0.55.0-rc.1/apache-opendal-bindings-java-0.48.2-src.tar.gz.asc
```
+The RC directory is versioned by the vote round, while each artifact keeps its
package version.
+Do not expect a single `apache-opendal-${opendal_version}-src.tar.gz` artifact
or any `apache-opendal-bin-*` artifacts in this repository.
+
### Verify checksums and signatures
GnuPG is recommended here. It can be installed with the following command:
@@ -98,6 +103,8 @@ The script is in the `scripts` directory of our repository.
You can download it directly from
[here](https://raw.githubusercontent.com/apache/opendal/main/scripts/verify.py).
Please put it in the same directory as the release candidate.
+The script checks every `*.tar.gz` in the RC directory that has matching
`.asc` and `.sha512` files, extracts each `apache-opendal-*-src` tree, verifies
`LICENSE` and `NOTICE`, builds `core`, and builds `bindings/java` when that
package is present.
+
Run the script in a specific release candidate's folder:
```shell
@@ -108,21 +115,24 @@ You will see the following output if the verification is
successful:
```shell
$ python ./verify.py
-> Checking apache-opendal-bin-oli-0.41.3-src.tar.gz
-gpg: Signature made 五 6/ 7 20:57:06 2024 CST
+> Checking apache-opendal-core-0.55.0-src.tar.gz
+gpg: Signature made Fri Jun 7 20:57:06 2024 CST
gpg: using RSA key 8B374472FAD328E17F479863B379691FC6E298DD
gpg: Good signature from "Zili Chen (CODE SIGNING KEY) <[email protected]>"
[unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 8B37 4472 FAD3 28E1 7F47 9863 B379 691F C6E2 98DD
-> Success to verify the gpg sign for apache-opendal-bin-oli-0.41.3-src.tar.gz
-apache-opendal-bin-oli-0.41.3-src.tar.gz: OK
-> Success to verify the checksum for apache-opendal-bin-oli-0.41.3-src.tar.gz
+> Success to verify the gpg sign for apache-opendal-core-0.55.0-src.tar.gz
+apache-opendal-core-0.55.0-src.tar.gz: OK
+> Success to verify the checksum for apache-opendal-core-0.55.0-src.tar.gz
+> Checking apache-opendal-bindings-java-0.48.2-src.tar.gz
+apache-opendal-bindings-java-0.48.2-src.tar.gz: OK
+> Success to verify the checksum for
apache-opendal-bindings-java-0.48.2-src.tar.gz
.......
-> Start checking LICENSE file in
/Users/yan/Downloads/opendal-dev/apache-opendal-0.47.0-src
-> LICENSE file exists in
/Users/yan/Downloads/opendal-dev/apache-opendal-0.47.0-src
-> Start checking NOTICE file in
/Users/yan/Downloads/opendal-dev/apache-opendal-0.47.0-src
-> NOTICE file exists in
/Users/yan/Downloads/opendal-dev/apache-opendal-0.47.0-src
+> Start checking LICENSE file in
/Users/yan/Downloads/opendal-dev/apache-opendal-core-0.55.0-src
+> LICENSE file exists in
/Users/yan/Downloads/opendal-dev/apache-opendal-core-0.55.0-src
+> Start checking NOTICE file in
/Users/yan/Downloads/opendal-dev/apache-opendal-core-0.55.0-src
+> NOTICE file exists in
/Users/yan/Downloads/opendal-dev/apache-opendal-core-0.55.0-src
cargo 1.78.0 (54d8815d0 2024-03-26)
Start building opendal core
Success to build opendal core
@@ -133,10 +143,12 @@ Start building opendal java binding
> Success to build opendal java binding
```
-## Check the file content of the source package
+## Check the file content of the source packages
-Unzip `apache-opendal-${release_version}-${rc_version}-src.tar.gz` and check
the follows:
+Unpack each released source package, for example
`apache-opendal-core-0.55.0-src.tar.gz` or
`apache-opendal-bindings-java-0.48.2-src.tar.gz`, and check the following:
+- The package layout matches the package being released.
+- Repo-local dependencies needed by that package are included. For example,
bindings and integrations packages include `core`.
- LICENSE and NOTICE files are correct for the repository.
- All files have ASF license headers if necessary.
- Building is OK.