This is an automated email from the ASF dual-hosted git repository.

jark pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fluss.git


The following commit(s) were added to refs/heads/main by this push:
     new e0d85a2fc [docs] Update release process documentation for version 
bump, upgrade notes, and docker images
e0d85a2fc is described below

commit e0d85a2fc0cc60488f7d41aa71c044dbc2638d85
Author: Jark Wu <[email protected]>
AuthorDate: Sun Oct 26 15:58:59 2025 +0800

    [docs] Update release process documentation for version bump, upgrade 
notes, and docker images
---
 .../how-to-release/creating-a-fluss-release.mdx    | 160 ++++++++++++++++-----
 1 file changed, 125 insertions(+), 35 deletions(-)

diff --git a/website/community/how-to-release/creating-a-fluss-release.mdx 
b/website/community/how-to-release/creating-a-fluss-release.mdx
index 640fa006f..f7379a6cf 100644
--- a/website/community/how-to-release/creating-a-fluss-release.mdx
+++ b/website/community/how-to-release/creating-a-fluss-release.mdx
@@ -162,10 +162,12 @@ $ git push origin release-${SHORT_RELEASE_VERSION}
 
 
 
-### 8. Bump version for the main branch
+### 8. Updates for the main branch
 
 <Tabs groupId="release-tabs">
   <TabItem value="major" label="Major release" default>
+**(1) Bump version for the main branch**
+
 After creating the release branch, you should bump the version of the main 
branch to the next version. This is important to ensure that the next 
development cycle starts with the correct version.
 
 ```bash
@@ -175,6 +177,8 @@ tools $ OLD_VERSION=$CURRENT_SNAPSHOT_VERSION 
NEW_VERSION=$NEXT_SNAPSHOT_VERSION
 tools $ git push origin main
 ```
 
+**(2) Create Upgrade Notes for the next version**
+
 Besides, in the `main` branch, create a new "Upgrade Notes" markdown file for 
the next version. The file name should be `upgrade-notes-x.y.md` (replace the 
`x.y` to the next version number, e.g., `0.9`) under path 
`website/docs/maintenance/operations/` with following initial content.
 
 ```
@@ -193,6 +197,29 @@ Commit the documentation changes, and push to the official 
repository.
 ```bash
 $ git commit -m "[docs] Create upgrade notes for $NEXT_SHORT_VERSION" .
 $ git push origin main
+```
+
+**(3) Add version item in fluss-versions.json**
+
+Next, add a new version item for the current release version in the 
`website/fluss-versions.json` file on the `main` branch. The new version item 
should have the following fields and values (releasing `0.8.0` as an example):
+
+```json
+{
+  "versionName": "version-0.8",
+  "fullVersion": "0.8.0-incubating",
+  "shortVersion": "0.8",
+  "dockerVersion": "0.8.0-incubating-rc1",
+  "released": false
+}
+```
+
+Additionally, update the `fullVersion`, `shortVersion`, and `dockerVersion` 
fields for the `next` version entry to reflect the next release version.
+
+Commit the documentation changes, and push to the official repository.
+
+```bash
+$ git commit -m "[docs] Add version item for $RELEASE_VERSION in 
fluss-versions.json
+$ git push origin main
 ```
   </TabItem>
 
@@ -208,8 +235,27 @@ If you're creating a new bugfix release, you can skip this 
step.
 
 Create a pull request for the release announcement blog for this version, see 
the [previous release blogs](https://fluss.apache.org/blog/tags/releases/).
 
+We usually include the commit number and the names of all contributors in the 
announcement blog post. Use the following command to get the commit number and 
the list of contributors:
+
+
+```bash
+# first line is required to make sort first with uppercase and then lower
+export LC_ALL=C
+export FLUSS_PREVIOUS_RELEASE_BRANCH={previousReleaseBranch}
+export FLUSS_CURRENT_RELEASE_BRANCH={currentReleaseBranch}
+# e.g.
+# export FLUSS_PREVIOUS_RELEASE_BRANCH=release-0.7
+# export FLUSS_CURRENT_RELEASE_BRANCH=release-0.8
+
+# get contributor list
+git log $FLUSS_PREVIOUS_RELEASE_BRANCH..$FLUSS_CURRENT_RELEASE_BRANCH 
--pretty=format:"%an" | sort -u | paste -sd "," - | sed 's/,/, /g'
+# get total number of commits
+git log $FLUSS_PREVIOUS_RELEASE_BRANCH...$FLUSS_CURRENT_RELEASE_BRANCH 
--pretty=oneline | wc -l
+```
+
 Besides, Create a pull request to add download links for the release on the 
Download page `website/src/pages/downloads.md`.
 
+
   </TabItem>
 
   <TabItem value="bugfix" label="Bugfix release">
@@ -295,21 +341,31 @@ Then, we create the Helm Chart packages:
 tools $ RELEASE_VERSION=$RELEASE_VERSION RELEASE_CANDIDATE=$RC_NUM 
releasing/create_helm_packages.sh
 ```
 
-This command creates a helm tgz and prov files under 
`tools/releasing/release/helm-chart` directory like following:
+Now, we should already created the source distribution, binary distribution, 
and Helm Chart packages for the release candidate.
+Run the `tree releasing/release/` command under the `tools` directory to 
verify the created files.
 
-```bash
-tools $ tree releasing/release/helm-chart
-releasing/release/helm-chart
-├── 0.8.0-incubating-rc1
-│     ├── fluss-0.8.0-incubating.tgz
-│     ├── fluss-0.8.0-incubating.tgz.asc
-│     ├── fluss-0.8.0-incubating.tgz.prov
-│     ├── fluss-0.8.0-incubating.tgz.prov.asc
-│     ├── fluss-0.8.0-incubating.tgz.prov.sha512
-│     └── fluss-0.8.0-incubating.tgz.sha512
-└── index.yaml
+Example output for release version `0.8.0-incubating` and RC number `1`:
 
-2 directories, 7 files
+```bash
+tools $ tree releasing/release
+releasing/release
+├── fluss-0.8.0-incubating-bin.tgz
+├── fluss-0.8.0-incubating-bin.tgz.asc
+├── fluss-0.8.0-incubating-bin.tgz.sha512
+├── fluss-0.8.0-incubating-src.tgz
+├── fluss-0.8.0-incubating-src.tgz.asc
+├── fluss-0.8.0-incubating-src.tgz.sha512
+└── helm-chart
+    ├── 0.8.0-incubating-rc1
+    │     ├── fluss-0.8.0-incubating.tgz
+    │     ├── fluss-0.8.0-incubating.tgz.asc
+    │     ├── fluss-0.8.0-incubating.tgz.prov
+    │     ├── fluss-0.8.0-incubating.tgz.prov.asc
+    │     ├── fluss-0.8.0-incubating.tgz.prov.sha512
+    │     └── fluss-0.8.0-incubating.tgz.sha512
+    └── index.yaml
+
+3 directories, 13 files
 ```
 
 
@@ -335,7 +391,7 @@ tools/target $ mkdir 
fluss/fluss-${RELEASE_VERSION}-rc${RC_NUM}
 (3) Copy fluss source and binary distributions, hashes, and GPG signature:
 
 ```bash
-tools/target $ mv ../release/fluss-* fluss/fluss-${RELEASE_VERSION}-rc${RC_NUM}
+tools/target $ mv ../releasing/release/fluss-* 
fluss/fluss-${RELEASE_VERSION}-rc${RC_NUM}
 ```
 
 (4) Make a directory for the new helm packages:
@@ -347,7 +403,7 @@ tools/target $ mkdir -p fluss/helm-chart
 (5) Copy fluss helm packages, hashes, and GPG signature:
 
 ```bash
-tools/target $ mv ../release/helm-chart/* fluss/helm-chart
+tools/target $ mv ../releasing/release/helm-chart/* fluss/helm-chart
 ```
 
 (6) Add and commit all the files.
@@ -355,16 +411,34 @@ tools/target $ mv ../release/helm-chart/* fluss/helm-chart
 ```bash
 tools/target $ cd fluss
 tools/target/fluss $ svn add fluss-${RELEASE_VERSION}-rc${RC_NUM}
+tools/target/fluss $ svn add helm-chart
 tools/target/fluss $ svn commit -m "Add fluss-${RELEASE_VERSION}-rc${RC_NUM}"
 ```
 
 (7) Verify the files are present: 
https://dist.apache.org/repos/dist/dev/incubator/fluss/
 
 
-### 6. Stage Docker images
+### 6. Stage maven artifacts
+
+
+Next, we stage the maven artifacts:
+
+```bash
+tools $ releasing/deploy_staging_jars.sh
+```
+
+Review all staged artifacts in the staging 
repositories(https://repository.apache.org/#stagingRepositories). They should 
contain all relevant parts for each module, including pom.xml, jar, test jar, 
source, test source, javadoc, etc. Carefully review any new artifacts.
+
+Close the staging repository on Apache Nexus. When prompted for a description, 
enter `Apache Fluss (Incubating), version X, release candidate Y`. You can find 
the staging repository URL 
(`https://repository.apache.org/content/repositories/orgapachefluss-[STAGING_ID]/`)
 once the staging repository is closed successfully.
+
+![](../assets/nexus-staging.png)
+
+### 7. Stage Docker images
 
 :::note
 Make sure that you are authenticated with your Docker ID, and that your Docker 
ID has access to `apache/fluss`: `docker login -u <username>`. If you do not 
have access, you should seek help via the dev mailing list.
+
+If you can't login Docker ID in your region because of network issues, you can 
find a cloud machine that can access Docker Hub, and perform the following 
steps there.
 :::
 
 Next, we need to build and push Docker images for the release candidates. This 
will enable users to easily test the new functionality using the Quickstart 
guide in the [Fluss 
documentation](https://fluss.apache.org/docs/quickstart/flink/) improving 
accessibility and feedback during the release validation phase.
@@ -373,7 +447,7 @@ From the root directory of the source code, run the 
following commands to build
 
 ```bash
 $ rm -rf docker/fluss/build-target/
-$ mkdir docker/fluss/build-target/ 
+$ mkdir docker/fluss/build-target/
 $ cp -r build-target/* docker/fluss/build-target
 
 $ cd docker/fluss
@@ -388,27 +462,18 @@ docker/quickstart-flink $ ./prepare_build.sh
 docker/quickstart-flink $ docker buildx build --push --platform 
linux/arm64/v8,linux/amd64 --tag 
apache/fluss-quickstart-flink:1.20-${RELEASE_VERSION}-rc${RC_NUM} .
 ```
 
-Verify the RC images are present: https://hub.docker.com/r/apache/fluss/tags
-
-### 7. Stage maven artifacts
-
+Verify the RC images are present:
+- https://hub.docker.com/r/apache/fluss/tags
+- https://hub.docker.com/r/apache/fluss-quickstart-flink/tags
 
-Next, we stage the maven artifacts:
-
-```bash
-tools $ releasing/deploy_staging_jars.sh
-```
-
-Review all staged artifacts in the staging 
repositories(https://repository.apache.org/#stagingRepositories). They should 
contain all relevant parts for each module, including pom.xml, jar, test jar, 
source, test source, javadoc, etc. Carefully review any new artifacts.
+Then, update the `dockerVersion` field for the current release RC version in 
the `website/fluss-versions.json` file on the `main` branch to the value of 
`${RELEASE_VERSION}_RC${RC_NUM}` (which includes the RC suffix, e.g., 
`0.8.0-incubating-rc1`). This update should be committed and pushed to the 
`main` branch.
 
-Close the staging repository on Apache Nexus. When prompted for a description, 
enter `Apache Fluss (Incubating), version X, release candidate Y`. You can find 
the staging repository URL 
(`https://repository.apache.org/content/repositories/orgapachefluss-[STAGING_ID]/`)
 once the staging repository is closed successfully.
-
-![](../assets/nexus-staging.png)
+This ensures that the **Quickstart guide** in the documentation references the 
correct Docker image for the release candidate. This will help developers to 
easily test the new release candidate using the Quickstart guide.
 
 ### 8. Push the RC tag
 
 ```bash
-git push origin refs/tags/{$TAG}
+git push origin $TAG
 ```
 
 -------------
@@ -419,7 +484,7 @@ git push origin refs/tags/{$TAG}
 - Maven artifacts deployed to the staging repository of 
[repository.apache.org](https://repository.apache.org/content/repositories/)
 - RC Docker images pushed to 
[DockerHub](https://hub.docker.com/r/apache/fluss/tags)
 - RC tag pushed to the [official 
repository](https://github.com/apache/fluss/tags)
-- TODO: update version.txt in release branch for the RC docker image
+- Updated `dockerVersion` in `fluss-versions.json` on `main` branch
 
 
 ## Vote on the release candidate
@@ -617,6 +682,16 @@ Code changes should be proposed as standard pull requests 
to the `main` branch a
 
 Once all issues have been resolved, you should go back and build a new release 
candidate with these changes.
 
+Before build a new release candidate, remove the old release candidates from 
https://dist.apache.org/repos/dist/dev/incubator/fluss using Subversion.
+
+```bash
+svn checkout https://dist.apache.org/repos/dist/dev/incubator/fluss 
--depth=immediates
+cd fluss
+svn remove fluss-${RELEASE_VERSION}-rc*
+svn remove helm-chart
+svn commit -m "Remove old release candidates for Apache Fluss 
${RELEASE_VERSION}"
+```
+
 **Checklist to proceed to the next step**
 - Issues identified during vote have been resolved, with fixes committed to 
the release branch.
 
@@ -680,7 +755,22 @@ docker tag apache/fluss:${RELEASE_VERSION}_RC${RC_NUM} 
apache/fluss:${RELEASE_VE
 docker push apache/fluss:${RELEASE_VERSION}
 ```
 
-### 6. Mark the Milestone as released in GitHub
+### 6. Update `fluss-versions.json`
+
+Update the `released` field to `true` and `dockerVersion` to 
`$RELEASE_VERSION` (without the RC number) for the current release version in 
the `website/fluss-versions.json` file on the `main` branch. This update should 
be committed and pushed to the `main` branch.
+This will refresh the documentation website to reflect that the new version 
has been officially released.
+
+```json
+{
+  "versionName": "version-0.8",
+  "fullVersion": "0.8.0-incubating",
+  "shortVersion": "0.8",
+  "dockerVersion": "0.8.0-incubating-rc1", // ==> "0.8.0-incubating"
+  "released": false // ==> true
+}
+```
+
+### 7. Mark the Milestone as released in GitHub
 
 In [GitHub Milestones](https://github.com/apache/fluss/milestones), mark the 
current release milestone as close.
 

Reply via email to