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 920eb33b9 [infra] Add release guide documentation and update scripts
920eb33b9 is described below
commit 920eb33b99646dd8f687224feb637dca2bfacd21
Author: Jark Wu <[email protected]>
AuthorDate: Thu Oct 23 20:10:48 2025 +0800
[infra] Add release guide documentation and update scripts
---
tools/releasing/create_binary_release.sh | 2 +-
...e_source_release.sh => create_helm_packages.sh} | 36 +-
tools/releasing/create_source_release.sh | 2 +-
tools/releasing/deploy_staging_jars.sh | 44 +++
tools/releasing/update_branch_version.sh | 61 ++++
...ded-release.md => creating-a-fluss-release.mdx} | 385 +++++++++++++++++----
.../creating-a-fluss-shaded-release.md | 10 +-
.../how-to-release/release-manager-preparation.md | 16 +
...ded-release.md => verifying-a-fluss-release.md} | 31 +-
.../verifying-a-fluss-shaded-release.md | 2 +-
website/docs/maintenance/operations/upgrading.md | 4 +-
11 files changed, 493 insertions(+), 100 deletions(-)
diff --git a/tools/releasing/create_binary_release.sh
b/tools/releasing/create_binary_release.sh
index d894a88a5..2598e9d95 100755
--- a/tools/releasing/create_binary_release.sh
+++ b/tools/releasing/create_binary_release.sh
@@ -54,7 +54,7 @@ fi
cd ..
FLUSS_DIR=`pwd`
-RELEASE_DIR=${FLUSS_DIR}/tools/releasing/release
+RELEASE_DIR=${FLUSS_DIR}/tools/release
mkdir -p ${RELEASE_DIR}
###########################
diff --git a/tools/releasing/create_source_release.sh
b/tools/releasing/create_helm_packages.sh
similarity index 64%
copy from tools/releasing/create_source_release.sh
copy to tools/releasing/create_helm_packages.sh
index d83bb9863..f4bc11251 100755
--- a/tools/releasing/create_source_release.sh
+++ b/tools/releasing/create_helm_packages.sh
@@ -56,29 +56,25 @@ fi
cd ..
FLUSS_DIR=`pwd`
-RELEASE_DIR=${FLUSS_DIR}/tools/releasing/release
-CLONE_DIR=${RELEASE_DIR}/fluss-tmp-clone
+HELM_RELEASE_DIR=${FLUSS_DIR}/tools/release/helm-chart/${RELEASE_VERSION}-rc${RELEASE_CANDIDATE}
-echo "Creating source package"
+echo "Creating helm chart package"
-mkdir -p ${RELEASE_DIR}
+mkdir -p ${HELM_RELEASE_DIR}
-# create a temporary git clone to ensure that we have a pristine source release
-git clone ${FLUSS_DIR} ${CLONE_DIR}
-cd ${CLONE_DIR}
+cd ${HELM_RELEASE_DIR}
-rsync -a \
- --exclude ".git" --exclude ".gitignore" --exclude ".gitattributes" \
- --exclude ".github" --exclude "target" \
- --exclude ".idea" --exclude "*.iml" --exclude ".DS_Store" --exclude
"build-target" \
- --exclude "website/" \
- --exclude "*/dependency-reduced-pom.xml" \
- . fluss-$RELEASE_VERSION
+# create helm package tgz for fluss
+helm package ${FLUSS_DIR}/docker/helm
+# create prov file for helm package
+helm gpg sign fluss-${RELEASE_VERSION}.tgz
-tar $TAR_OPTIONS -czf ${RELEASE_DIR}/fluss-${RELEASE_VERSION}-src.tgz
fluss-$RELEASE_VERSION
-gpg --armor --detach-sig ${RELEASE_DIR}/fluss-$RELEASE_VERSION-src.tgz
-cd ${RELEASE_DIR}
-$SHASUM fluss-$RELEASE_VERSION-src.tgz > fluss-$RELEASE_VERSION-src.tgz.sha512
+# create sha512 and asc files
+$SHASUM fluss-${RELEASE_VERSION}.tgz > fluss-${RELEASE_VERSION}.tgz.sha512
+$SHASUM fluss-${RELEASE_VERSION}.tgz.prov >
fluss-${RELEASE_VERSION}.tgz.prov.sha512
+gpg --armor --detach-sig ${HELM_RELEASE_DIR}/fluss-$RELEASE_VERSION.tgz
+gpg --armor --detach-sig ${HELM_RELEASE_DIR}/fluss-$RELEASE_VERSION.tgz.prov
-cd ${CURR_DIR}
-rm -rf ${CLONE_DIR}
+# create index.yaml
+cd ..
+helm repo index .
\ No newline at end of file
diff --git a/tools/releasing/create_source_release.sh
b/tools/releasing/create_source_release.sh
index d83bb9863..3bdc9e563 100755
--- a/tools/releasing/create_source_release.sh
+++ b/tools/releasing/create_source_release.sh
@@ -56,7 +56,7 @@ fi
cd ..
FLUSS_DIR=`pwd`
-RELEASE_DIR=${FLUSS_DIR}/tools/releasing/release
+RELEASE_DIR=${FLUSS_DIR}/tools/release
CLONE_DIR=${RELEASE_DIR}/fluss-tmp-clone
echo "Creating source package"
diff --git a/tools/releasing/deploy_staging_jars.sh
b/tools/releasing/deploy_staging_jars.sh
new file mode 100755
index 000000000..458434698
--- /dev/null
+++ b/tools/releasing/deploy_staging_jars.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+
+#
+# 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.
+#
+
+##
+## Variables with defaults (if not overwritten by environment)
+##
+MVN=${MVN:-mvn}
+
+# fail immediately
+set -o errexit
+set -o nounset
+# print command before executing
+set -o xtrace
+
+CURR_DIR=`pwd`
+if [[ `basename $CURR_DIR` != "tools" ]] ; then
+ echo "You have to call the script from the tools/ dir"
+ exit 1
+fi
+
+###########################
+COMMON_OPTIONS="-Prelease -DskipTests -DretryFailedDeploymentCount=10 "
+
+cd ..
+
+echo "Deploying to repository.apache.org"
+$MVN clean deploy $COMMON_OPTIONS
diff --git a/tools/releasing/update_branch_version.sh
b/tools/releasing/update_branch_version.sh
new file mode 100755
index 000000000..5c4cba3da
--- /dev/null
+++ b/tools/releasing/update_branch_version.sh
@@ -0,0 +1,61 @@
+#!/usr/bin/env bash
+
+#
+# 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.
+#
+
+##
+## Variables with defaults (if not overwritten by environment)
+##
+MVN=${MVN:-mvn}
+
+# fail immediately
+set -o errexit
+set -o nounset
+# print command before executing
+set -o xtrace
+
+CURR_DIR=`pwd`
+if [[ `basename $CURR_DIR` != "tools" ]] ; then
+ echo "You have to call the script from the tools/ dir"
+ exit 1
+fi
+
+###########################
+
+OLD_VERSION=${OLD_VERSION}
+NEW_VERSION=${NEW_VERSION}
+
+
+if [ -z "${OLD_VERSION}" ]; then
+ echo "OLD_VERSION is unset"
+ exit 1
+fi
+
+if [ -z "${NEW_VERSION}" ]; then
+ echo "NEW_VERSION is unset"
+ exit 1
+fi
+
+cd ..
+
+#change version in all pom files
+find . -name 'pom.xml' -type f -exec perl -pi -e
's#<version>'$OLD_VERSION'</version>#<version>'$NEW_VERSION'</version>#;
s#-'$OLD_VERSION'</version>#-'$NEW_VERSION'</version>#' {} \;
+
+git commit -am "Update version to $NEW_VERSION"
+
+echo "Don't forget to push the change."
diff --git
a/website/community/how-to-release/creating-a-fluss-shaded-release.md
b/website/community/how-to-release/creating-a-fluss-release.mdx
similarity index 52%
copy from website/community/how-to-release/creating-a-fluss-shaded-release.md
copy to website/community/how-to-release/creating-a-fluss-release.mdx
index 0ca0b6892..4ed4d7acf 100644
--- a/website/community/how-to-release/creating-a-fluss-shaded-release.md
+++ b/website/community/how-to-release/creating-a-fluss-release.mdx
@@ -1,9 +1,13 @@
---
-title: Creating a Fluss Shaded Release
+title: Creating a Fluss Release
sidebar_position: 2
+description: This documentation introduces about how to create a Fluss release.
---
-# Creating a Fluss Shaded Release
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Creating a Fluss Release
:::note
This is based on the release guide of the [Apache Flink
project](https://cwiki.apache.org/confluence/display/FLINK/Creating+a+Flink+Release).
@@ -43,67 +47,196 @@ In general, the community prefers to have a rotating set
of 3-5 Release Managers
## Prepare for the release
-#### 0. One-time Release Manager setup
+### 0. One-time Release Manager setup
Before your first release, you should perform one-time configuration steps.
This will set up your security keys for signing the release and access to
various release repositories. Please check the **[Release Manager
Preparation](release-manager-preparation.md)** guide for details.
To prepare for each release, you should audit the project status in the GitHub
issue tracker, and do necessary bookkeeping. Finally, you should create a
release branch from which individual release candidates will be built.
-#### 1. Setup environment variables
+### 1. Create a new Milestone in GitHub
+
+When contributors resolve an issue in GitHub, they are tagging it with a
release milestone that will contain their changes. With the release currently
underway, new issues should be resolved against a subsequent future release.
Therefore, you should create a new milestone item for this subsequent release,
as follows:
+
+In [GitHub Milestones](https://github.com/apache/fluss/milestones) page, add a
new milestone: choose the next minor version number compared to the one
currently underway. For example, add `v0.9` milestone if current version is
`v0.8`. We only track the major and minor version, so no need to create
milestone for bugfix versions, e.g., `v0.9.1`.
+
+(Note: Only PMC members have access to the project administration. If you do
not have access, ask on the mailing list or Slack for assistance.)
+
+### 2. Triage release-blocking issues in GitHub
+
+There could be outstanding release-blocking issues, which should be triaged
before proceeding to build a release candidate. We track them by assigning a
specific Fix version field even before the issue resolved.
+
+The list of release-blocking issues is available at the [issue
page](https://github.com/apache/fluss/issues?q=is%3Aissue%20state%3Aopen%20milestone%3Av0.8)
(please update the `milestone` condition to the current version name). Triage
each unresolved issue with one of the following resolutions:
+
+- If the issue has been resolved and issue was not updated, resolve it
accordingly.
+- If the issue has not been resolved and it is acceptable to defer this until
the next release, update the `Milestone` field to the new version you just
created. Please consider discussing this with stakeholders and the dev@ mailing
list, as appropriate. Use the "Bulk Change" functionality of GitHub Issue to
update a batch of unresolved issues to new milestone version.
+- **If the issue has not been resolved and it is not acceptable to release
until it is fixed (i.e., blocker issues), the release cannot proceed.**
Instead, work with the Fluss community to resolve the issue. Add
`priority=blocker` label to such issues.
+- Documentation issues for new supported features are treated as **blocker
issues**.
+
+### 3. Add Milestone for all resolved issues
+
+Use the [issue
filter](https://github.com/apache/fluss/issues?q=is%3Aissue%20state%3Aclosed%20reason%3Acompleted%20no%3Amilestone%20(-label%3Aduplicate%20AND%20-label%3Ainvalid%20AND%20-label%3Aquestion%20AND%20-label%3Awontfix%20AND%20-label%3A%22help%20wanted%22%20))
to list all the closed issues without tagging Milestone during this version.
+
+Then, review each issue and apply labels (`invalid` or `question` or `wontfix`
or `help wanted`) to those that were not actually resolved in this version
(e.g., closed as non-issues or support requests). For the remaining genuinely
resolved issues, use the “Bulk Change” feature to assign them to the current
release milestone.
+
+This ensures the milestone accurately reflects all the issues delivered in the
release.
+
+### 4. Verify Java and Maven Version
+
+Run `mvn -v` and `java -version` on your local machine. All of the following
steps require to use **Maven 3.8.6** and **Java 11**. Modify your `PATH`
environment variable accordingly if needed.
+
+
+### 5. Clone Fluss into a fresh workspace
+
+Clone the Fluss repository into a fresh workspace. This is important to ensure
that you are working with a clean state.
+
+```bash
+git clone [email protected]:apache/fluss.git
+```
+
+### 6. Setup local environment variables
Set up a few environment variables to simplify commands that follow. (We use
bash Unix syntax in this guide.)
```bash
-RELEASE_VERSION="1.0-incubating"
-RELEASE_VERSION_SHORT="1.0"
-NEXT_VERSION="2.0-incubating"
+RELEASE_VERSION="0.8.0-incubating"
+SHORT_RELEASE_VERSION="0.8"
+CURRENT_SNAPSHOT_VERSION="$SHORT_RELEASE_VERSION-SNAPSHOT"
+NEXT_SNAPSHOT_VERSION="0.9-SNAPSHOT"
+SHORT_NEXT_SNAPSHOT_VERSION="0.9"
+```
+
+### 7. Create a release branch
+
+<Tabs groupId="release-tabs">
+ <TabItem value="major" label="Major release" default>
+Create a release branch from the `main` branch in the cloned Fluss repository.
This branch will be used to build the release candidate.
+
+```bash
+$ git checkout main
+$ git checkout -b release-${RELEASE_VERSION_SHORT}
+$ git push origin release-${RELEASE_VERSION_SHORT}
```
-#### 2. Verify Java and Maven Version
+Update the version in the Helm Chart in:
+- `docker/helm/Chart.yaml`
+- `docker/helm/values.yaml`
+- `docker/helm/README.md`
-All of the following steps require to use **Maven 3.8.6** and **Java 8**.
Modify your `PATH` environment variable accordingly if needed.
+For example, if you are releaseing a major version `0.8.0`, you should replace
all the snapshot version `0.8-SNAPSHOT` to the release version `0.8.0`.
-#### 3. Clone fluss-shaded into a fresh workspace
-Clone the Fluss repository into a fresh workspace. This is important to ensure
that you are working with a clean state.
+And commit/push the version bump:
```bash
-git clone [email protected]:apache/fluss-shaded.git
+$ git commit -m "Bump version to x.y.z" docker/helm/Chart.yaml
docker/helm/values.yaml docker/helm/README.md
+$ git push origin release-${RELEASE_VERSION_SHORT}
```
-#### 4. Create a release branch
+ </TabItem>
-Create a release branch from the `main` branch. This branch will be used to
build the release candidate.
+ <TabItem value="bugfix" label="Bugfix release">
+If you're creating a new bugfix release (e.g., 0.9.1 instead of 0.9.0), you do
not need to create a release branch. You can skip this step can check out the
the already existing branch for that version:
```bash
-$ cd tools
-tools $ git checkout main
-tools $ git checkout -b release-${RELEASE_VERSION_SHORT}
-tools $ git push origin release-${RELEASE_VERSION_SHORT}
+$ git checkout release-$SHORT_RELEASE_VERSION
+```
+
+Update the version in the Helm Chart in:
+- `docker/helm/Chart.yaml`
+- `docker/helm/values.yaml`
+- `docker/helm/README.md`
+
+For example, if you are releaseing a bugfix version `0.8.1`, you should
replace all the previous version `0.8.0` to the new version `0.8.1`.
+
+
+And commit/push the version bump:
+
+```bash
+$ git commit -m "Bump version to x.y.z" docker/helm/Chart.yaml
docker/helm/values.yaml docker/helm/README.md
+$ git push origin release-${RELEASE_VERSION_SHORT}
```
-#### 5. Bump version for the main branch
+ </TabItem>
+</Tabs>
+
+
+
+### 8. Bump version for the main branch
+
+<Tabs groupId="release-tabs">
+ <TabItem value="major" label="Major release" default>
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
+$ cd tools
tools $ git checkout main
-tools $ OLD_VERSION=$RELEASE_VERSION NEW_VERSION=$NEXT_VERSION
releasing/update_branch_version.sh
+tools $ OLD_VERSION=$CURRENT_SNAPSHOT_VERSION NEW_VERSION=$NEXT_VERSION
releasing/update_branch_version.sh
tools $ git push origin main
```
-The newly created branch and updated master branch need to be pushed to the
official repository.
+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.
+
+```
+---
+title: Upgrade Notes
+sidebar_position: 3
+---
+
+# Upgrade Notes from v0.x to v0.y
+```
+
+Additionally, for the upgrade notes page of the version currently being
released (e.g., `upgrade-notes-0.8.md`), add `sidebar_class_name: hidden` front
matter to hide it from the sidebar.
+
+Commit the documentation changes, and push to the official repository.
+
+```bash
+$ git commit -m "[docs] Create upgrade notes for $NEXT_VERSION"
+$ git push origin main
+```
+ </TabItem>
+
+ <TabItem value="bugfix" label="Bugfix release">
+If you're creating a new bugfix release, you can skip this step.
+ </TabItem>
+</Tabs>
+
+### 9. Pull Requests for Release Blog and Downloads
+
+<Tabs groupId="release-tabs">
+ <TabItem value="major" label="Major release" default>
+
+Create a pull request for the release announcement blog for this version, see
the [previous release blogs](https://fluss.apache.org/blog/tags/releases/).
+
+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">
+Create a pull request to update the download links on the Downloads page
(`website/src/pages/downloads.md`) to point to the newly released bugfix
version.
+ </TabItem>
+</Tabs>
+
+**Don’t merge the PRs before finalizing the release.**
+
+
+-------------
+
**Checklist to proceed to the next step**
- Release Manager’s GPG key is published to
[dist.apache.org](https://dist.apache.org/repos/dist/release/incubator/fluss/KEYS)
- Release Manager’s GPG key is configured in git configuration
- Release Manager's GPG key is configured as the default gpg key.
-- Release Manager has `org.apache.fluss` listed under `Staging Profiles` in
Nexus
+- Release Manager has `org.apache.fluss` listed under `Staging Profiles` in
[Apache Nexus repository](https://repository.apache.org/).
- Release Manager’s Nexus User Token is configured in `settings.xml`
- There are no release blocking GitHub issues
-- Release branch (`release-x.0`) has been created and pushed
-- Main branch has been updated to the next version and pushed
+- Update compatibility table between versions
(`website/docs/maintenance/operations/upgrading.md`).
+- (major only) Update upgrade notes for the current and next version
(`website/docs/maintenance/operations/upgrade-notes-x.y.md`)
+- (major only) Release branch (`release-x.y`) has been created and pushed
+- (major only) Main branch has been updated to the next version and pushed
+- (major only) Pull request for the release announcement blog
+- Pull request for updating download links
## Build a release candidate
@@ -132,7 +265,7 @@ Tag the release commit:
git tag -s ${TAG} -m "${TAG}"
```
-### 2. Stage source release files
+### 2. Create source release files
First, we build the source release:
@@ -142,7 +275,47 @@ tools $ RELEASE_VERSION=$RELEASE_VERSION
releasing/create_source_release.sh
This command creates a source tarball and signs it under `tools/release`
directory.
-Next, copy the source release files to the dev repository of dist.apache.org.
+
+### 3. Create binary release files
+
+Then, we create the binary convenience release files:
+
+```bash
+tools $ RELEASE_VERSION=$RELEASE_VERSION releasing/create_binary_release.sh
+```
+
+This command creates a binary tarball and signs it under `tools/release`
directory.
+
+### 4. Create Helm Chart package
+
+Then, we create the Helm Chart packages:
+
+```bash
+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/release/helm-chart` directory like following:
+
+```bash
+$ tree tools/release/helm-chart
+tools/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
+
+2 directories, 7 files
+```
+
+
+### 4. Stage source & binary & helm releases
+
+
+Next, copy the source and binary release files to the dev repository of
dist.apache.org.
(1) If you have not already, check out the Fluss section of the dev repository
on dist.apache.org via Subversion. In a fresh directory (e.g., `tools/target`):
@@ -155,27 +328,68 @@ tools/target $ svn checkout
https://dist.apache.org/repos/dist/dev/incubator/flu
(2) Make a directory for the new release:
```bash
-mkdir fluss/fluss-shaded-${RELEASE_VERSION}-rc${RC_NUM}
+tools/target $ mkdir fluss/fluss-${RELEASE_VERSION}-rc${RC_NUM}
```
-(3) Copy fluss-shaded source distributions, hashes, and GPG signature:
+(3) Copy fluss source and binary distributions, hashes, and GPG signature:
```bash
-tools/target $ mv ../release/*
fluss/fluss-shaded-${RELEASE_VERSION}-rc${RC_NUM}
+tools/target $ mv ../release/fluss-* fluss/fluss-${RELEASE_VERSION}-rc${RC_NUM}
```
-(4) Add and commit all the files.
+(4) Make a directory for the new helm packages:
```bash
-cd fluss
-svn add fluss-shaded-${RELEASE_VERSION}-rc${RC_NUM}
-svn commit -m "Add fluss-shaded-${RELEASE_VERSION}-rc${RC_NUM}"
+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
```
-(5) Verify the files are present:
https://dist.apache.org/repos/dist/dev/incubator/fluss/
+(6) Add and commit all the files.
+```bash
+tools/target $ cd fluss
+tools/target/fluss $ svn add fluss-${RELEASE_VERSION}-rc${RC_NUM}
+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/
+
+
+### 5. Push the staging 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.
+:::
-### 3. Stage maven artifacts
+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.
+
+From the root directory of the source code, run the following commands to
build and push the fluss Docker image.
+
+```bash
+$ rm -rf docker/fluss/build-target/
+$ mkdir docker/fluss/build-target/
+$ cp -r build-target/* docker/fluss/build-target
+
+$ cd docker/fluss
+docker/fluss $ docker buildx build --push --platform
linux/arm64/v8,linux/amd64 --tag apache/fluss:${RELEASE_VERSION}-rc${RC_NUM} .
+```
+
+Then, run the following commands to build and push the flink — a customized
Apache Flink image that includes all necessary libraries and JARs for the Fluss
Quickstart guide:
+
+```bash
+docker/fluss $ cd ../quickstart-flink
+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
+
+### 6. Stage maven artifacts
Next, we stage the maven artifacts:
@@ -184,25 +398,25 @@ Next, we stage the maven artifacts:
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.
(fluss-shaded doesn’t deploy test jar, source jar, and javadoc jar, see the
[issue](https://github.com/apache/fluss-shaded/blob/main/README.md#sources) for
more details)
+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.

-
-### 4. Push the RC tag
+### 7. Push the RC tag
```bash
-git push <remote> refs/tags/{$TAG}
+git push origin refs/tags/{$TAG}
```
+-------------
**Checklist to proceed to the next step**
- Maven artifacts deployed to the staging repository of
[repository.apache.org](https://repository.apache.org/content/repositories/)
-- Source distribution deployed to the dev repository of
[dist.apache.org](https://dist.apache.org/repos/dist/dev/incubator/fluss/)
-- RC tag pushed to the [official
repository](https://github.com/apache/fluss-shaded/tags)
+- Source and binary distribution deployed to the dev repository of
[dist.apache.org](https://dist.apache.org/repos/dist/dev/incubator/fluss/)
+- RC tag pushed to the [official
repository](https://github.com/apache/fluss/tags)
## Vote on the release candidate
@@ -218,19 +432,52 @@ Start the review-and-vote thread on the dev@ mailing
list. Here’s an email tem
```
From: Release Manager
To: [email protected]
-Subject: [VOTE] Release fluss-shaded 1.0-incubating (RC3)
+Subject: [VOTE] Release Fluss 0.8.0-incubating (RC1)
Hi everyone,
-Please review and vote on the release candidate #3 for the fluss-shaded
version 1.0-incubating, as follows:
+Please review and vote on the release candidate #1 for the Apache Fluss
version 0.8.0-incubating, as follows:
[ ] +1, Approve the release
[ ] -1, Do not approve the release (please provide specific comments)
-The complete staging area is available for your review, which includes:
-* the official Apache source release and binary convenience releases to be
deployed to dist.apache.org [1], which are signed with the key with fingerprint
FFFFFFFF [2],
-* all artifacts to be deployed to the Maven Central Repository [3],
-* source code tag "release-1.0-incubating-rc3" [4],
+The complete staging area is available for your review, includes:
+
+The official source release and binary convenience releases to be deployed to:
+* https://dist.apache.org/repos/dist/dev/incubator/fluss/x.y.z
+
+Helm charts are available on:
+* https://dist.apache.org/repos/dist/dev/incubator/fluss/helm-chart
+(NB: you have to build the Docker images locally with the version
0.8.0-incubating in order to test Helm charts)
+
+All the files are signed with the key with fingerprint FFFFFFFF, you can find
the KEYS file here:
+* https://dist.apache.org/repos/dist/release/incubator/fluss/KEYS
+
+All artifacts to be deployed to the Maven Central Repository:
+* https://repository.apache.org/content/repositories/orgapachefluss-<ID>/
+
+Git tag for the release:
+* https://github.com/apache/fluss/releases/tag/v0.8.0-incubating-rc1
+
+Git commit for the release:
+* https://github.com/apache/fluss/commit/<COMMIT>
+
+Website pull request for the release announcement blog post
+* https://github.com/apache/fluss/pull/<ID>
+
+Website pull request for listing the new release on the download page
+* https://github.com/apache/fluss/pull/<ID>
+
+Upgrade note for the new release:
+*
https://github.com/apache/fluss/blob/release-0.8/website/docs/maintenance/operations/upgrade-notes-0.8.md
+
+Docker images for the release candidate:
+* fluss
+* quickstart
+
+Please download, verify and test. To learn more about how to verify:
+https://fluss.apache.org/community/how-to-release/verifying-a-fluss-release/
+
The vote will be open for at least 72 hours. It is adopted by majority
approval, with at least 3 PPMC affirmative votes.
@@ -241,6 +488,9 @@ Release Manager
[2] https://dist.apache.org/repos/dist/release/incubator/fluss/KEYS
[3] link
[4] link
+[5] link
+[6] link
+[7] link
```
**If there are any issues found in the release candidate**, reply on the vote
thread to cancel the vote. There’s no need to wait 72 hours. Proceed to the
[Fix Issues](#fix-any-issues) step below and address the problem. However, some
issues don’t require cancellation. For example, if an issue is found in the
website pull request, just correct it on the spot and the vote can continue
as-is.
@@ -256,7 +506,7 @@ For cancelling a release, the release manager needs to send
an email to the rele
```
From: Release Manager
To: [email protected]
-Subject: [RESULT][VOTE] Release fluss-shaded 1.0-incubating (RC3)
+Subject: [RESULT][VOTE] Release Fluss 0.8.0-incubating (RC1)
I'm happy to announce that we have unanimously approved this release.
@@ -280,12 +530,12 @@ Once the Fluss community has approved the release
candidate, the release manager
```
From: Release Manager
To: [email protected]
-Subject: [VOTE] Release Apache Fluss Shaded 1.0-incubating (RC3)
+Subject: [VOTE] Release Apache Fluss 0.8.0-incubating (RC1)
Hi everyone,
The Apache Fluss community has voted and approved the release of
-Apache Fluss Shaded 1.0-incubating (rc3). We now kindly request the IPMC
+Apache Fluss 0.8.0-incubating (RC1). We now kindly request the IPMC
members to review and vote for this release.
Apache Fluss (Incubating) - A streaming storage built for real-time analytics
which can serve as the real-time data layer for Lakehouse architectures.
@@ -297,10 +547,10 @@ Vote result thread:
* https://lists.apache.org/thread/<VOTE RESULT>
The release candidate:
-*
https://dist.apache.org/repos/dist/dev/incubator/fluss/fluss-shaded-1.0-incubating-rc3/
+*
https://dist.apache.org/repos/dist/dev/incubator/fluss/fluss-0.8.0-incubating-rc1/
Git tag for the release:
-* https://github.com/apache/fluss-shaded/releases/tag/v1.0-incubating-rc3
+* https://github.com/apache/fluss-shaded/releases/tag/v0.8.0-incubating-rc1
Git commit for the release:
* https://github.com/apache/fluss-shaded/commit/<COMMIT>
@@ -342,7 +592,7 @@ Binding votes are the votes from the IPMC members. Similar
to the previous vote,
```
From: Release Manager
To: [email protected]
-Subject: [RESULT][VOTE] Release Apache Fluss Shaded 1.0-incubating (RC3)
+Subject: [RESULT][VOTE] Release Apache Fluss 0.8.0-incubating (RC1)
I'm happy to announce that we have unanimously approved this release.
@@ -357,6 +607,8 @@ There are no disapproving votes.
Thanks everyone!
```
+-------------
+
**Checklist to proceed to the finalization step**
- Community votes to release the proposed candidate, with at least three
approving PPMC votes
- Incubator votes to release the proposed candidate, with at least three
approving IPMC votes
@@ -387,7 +639,7 @@ Use the [Apache Nexus](https://repository.apache.org/)
repository to release the
Copy the source and binary releases from the dev repository to the release
repository at dist.apache.org using Subversion.
```bash
-svn move -m "Release Fluss Shaded ${RELEASE_VERSION}"
https://dist.apache.org/repos/dist/dev/incubator/fluss/fluss-shaded-${RELEASE_VERSION}-rc${RC_NUM}
https://dist.apache.org/repos/dist/release/incubator/fluss/fluss-shaded-${RELEASE_VERSION}
+svn move -m "Release Fluss ${RELEASE_VERSION}"
https://dist.apache.org/repos/dist/dev/incubator/fluss/fluss-${RELEASE_VERSION}-rc${RC_NUM}
https://dist.apache.org/repos/dist/release/incubator/fluss/fluss-${RELEASE_VERSION}
```
(Note: Only PPMC members have access to the release repository. If you do not
have access, ask on the mailing list for assistance.)
@@ -398,8 +650,8 @@ Remove the old release candidates from
https://dist.apache.org/repos/dist/dev/in
```bash
svn checkout https://dist.apache.org/repos/dist/dev/incubator/fluss
--depth=immediates
cd fluss
-svn remove fluss-shaded-${RELEASE_VERSION}-rc*
-svn commit -m "Remove old release candidates for Apache Fluss Shaded
${RELEASE_VERSION}"
+svn remove fluss-${RELEASE_VERSION}-rc*
+svn commit -m "Remove old release candidates for Apache Fluss
${RELEASE_VERSION}"
```
#### Git tag
@@ -407,10 +659,14 @@ svn commit -m "Remove old release candidates for Apache
Fluss Shaded ${RELEASE_V
Create and push a new Git tag for the released version by copying the tag for
the final release candidate, as follows:
```bash
-git tag -s "v${RELEASE_VERSION}" refs/tags/${TAG}^{} -m "Release Fluss Shaded
${RELEASE_VERSION}"
-git push <remote> refs/tags/v${RELEASE_VERSION}
+git tag -s "v${RELEASE_VERSION}" refs/tags/${TAG}^{} -m "Release Fluss
${RELEASE_VERSION}"
+git push origin refs/tags/v${RELEASE_VERSION}
```
+#### TODO Docker
+
+#### TODO Helm Charts
+
**Checklist to proceed to the next step**
- Maven artifacts released and indexed in the Maven Central Repository
(usually takes about a day to show up)
- Source & binary distributions available in the release repository of
https://dist.apache.org/repos/dist/release/incubator/fluss/
@@ -430,18 +686,21 @@ Announce the release on the [email protected] mailing
list.
```
From: Release Manager
To: [email protected], [email protected], [email protected]
-Subject: [ANNOUNCE] Apache Fluss Shaded 1.0-incubating released
+Subject: [ANNOUNCE] Apache Fluss 0.8.0-incubating released
-The Apache Fluss community is very happy to announce the release of Apache
Fluss Shaded 1.0-incubating.
+The Apache Fluss community is very happy to announce the release of Apache
Fluss 0.8.0-incubating.
Apache Fluss is a streaming storage built for real-time analytics which can
serve as the real-time data layer for Lakehouse architectures.
The release is available for download at:
-https://downloads.apache.org/incubator/fluss/fluss-shaded-1.0-incubating/
+https://downloads.apache.org/incubator/fluss/fluss-0.8.0-incubating/
+
+Maven artifacts for Fluss can be found at:
-Maven artifacts for Fluss Shaded can be found at:
+https://central.sonatype.com/search?q=g%3Aorg.apache.fluss&smo=true
-https://central.sonatype.com/search?q=g%3Aorg.apache.fluss+shade&smo=true
+Please check out the release blog post for an overview of this release:
+https://fluss.apache.org/blog/releases/0.8/
We would like to thank all contributors of the Apache Fluss community who made
this release possible!
diff --git
a/website/community/how-to-release/creating-a-fluss-shaded-release.md
b/website/community/how-to-release/creating-a-fluss-shaded-release.md
index 0ca0b6892..c8f838d4b 100644
--- a/website/community/how-to-release/creating-a-fluss-shaded-release.md
+++ b/website/community/how-to-release/creating-a-fluss-shaded-release.md
@@ -1,6 +1,6 @@
---
title: Creating a Fluss Shaded Release
-sidebar_position: 2
+sidebar_position: 4
---
# Creating a Fluss Shaded Release
@@ -61,7 +61,7 @@ NEXT_VERSION="2.0-incubating"
#### 2. Verify Java and Maven Version
-All of the following steps require to use **Maven 3.8.6** and **Java 8**.
Modify your `PATH` environment variable accordingly if needed.
+Run `mvn -v` and `java -version` on your local machine. All of the following
steps require to use **Maven 3.8.6** and **Java 11**. Modify your `PATH`
environment variable accordingly if needed.
#### 3. Clone fluss-shaded into a fresh workspace
@@ -99,10 +99,10 @@ The newly created branch and updated master branch need to
be pushed to the offi
- Release Manager’s GPG key is published to
[dist.apache.org](https://dist.apache.org/repos/dist/release/incubator/fluss/KEYS)
- Release Manager’s GPG key is configured in git configuration
- Release Manager's GPG key is configured as the default gpg key.
-- Release Manager has `org.apache.fluss` listed under `Staging Profiles` in
Nexus
+- Release Manager has `org.apache.fluss` listed under `Staging Profiles` in
[Apache Nexus repository](https://repository.apache.org/).
- Release Manager’s Nexus User Token is configured in `settings.xml`
- There are no release blocking GitHub issues
-- Release branch (`release-x.0`) has been created and pushed
+- Release branch (`release-x.y`) has been created and pushed
- Main branch has been updated to the next version and pushed
## Build a release candidate
@@ -186,7 +186,7 @@ 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.
(fluss-shaded doesn’t deploy test jar, source jar, and javadoc jar, see the
[issue](https://github.com/apache/fluss-shaded/blob/main/README.md#sources) for
more details)
-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.
+Close the staging repository on Apache Nexus. When prompted for a description,
enter `Apache Fluss Shaded (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.

diff --git a/website/community/how-to-release/release-manager-preparation.md
b/website/community/how-to-release/release-manager-preparation.md
index e189e8751..c00eadc32 100644
--- a/website/community/how-to-release/release-manager-preparation.md
+++ b/website/community/how-to-release/release-manager-preparation.md
@@ -20,6 +20,22 @@ This release process is suggested to operate on MacOS or
Linux systems, and the
- GnuPG 2.x
- Git
- SVN
+- [Helm](https://helm.sh/docs/intro/install/) and
[helm-gpg](https://github.com/technosophos/helm-gpg) plugin
+- [Docker](https://docs.docker.com/get-started/get-docker/)
+
+:::note
+If you encounter issues installing `helm-gpg` using the command
+```bash
+helm plugin install https://github.com/technosophos/helm-gpg
+```
+you can install it manually by cloning the repository to a local directory and
then running:
+```bash
+helm plugin install /path/to/your/helm-gpg
+```
+
+This approach bypasses potential network or Git submodule issues during plugin
installation.
+:::
+
## GPG Key
diff --git
a/website/community/how-to-release/verifying-a-fluss-shaded-release.md
b/website/community/how-to-release/verifying-a-fluss-release.md
similarity index 71%
copy from website/community/how-to-release/verifying-a-fluss-shaded-release.md
copy to website/community/how-to-release/verifying-a-fluss-release.md
index 23f418d98..ec12ed191 100644
--- a/website/community/how-to-release/verifying-a-fluss-shaded-release.md
+++ b/website/community/how-to-release/verifying-a-fluss-release.md
@@ -1,9 +1,9 @@
---
-title: Verifying a Fluss Shaded Release
+title: Verifying a Fluss Release
sidebar_position: 3
---
-# Verifying a Fluss Shaded Release
+# Verifying a Fluss Release
## Validating distributions
@@ -33,7 +33,7 @@ for i in *.tgz; do echo $i; gpg --verify $i.asc $i; done
If the verification is successful, you will see a message like this:
```
-fluss-shaded-1.0-incubating-src.tgz
+fluss-0.8.0-incubating-src.tgz
gpg: Signature made Mon 01 Jan 2024 12:00:00 PM UTC
gpg: using RSA key E2C45417BED5C104154F341085BACB5AEFAE3202
gpg: Good signature from "Jark Wu (CODE SIGNING KEY) <[email protected]>"
@@ -50,13 +50,13 @@ for i in *.tgz; do echo $i; sha512sum --check $i.sha512*;
done
If the verification is successful, you will see a message like this:
```
-fluss-shaded-1.0-incubating-src.tgz
-fluss-shaded-1.0-incubating-src.tgz: OK
+fluss-0.8.0-incubating-src.tgz
+fluss-0.8.0-incubating-src.tgz: OK
```
## Verifying build
-Unzip the source release archive (`fluss-shaded-1.0-incubating-src.tgz`), and
verify that the source release builds correctly (may with different Java
version and Maven version), you can run the following commands:
+Unzip the source release archive (`fluss-0.8.0-incubating-src.tgz`), and
verify that the source release builds correctly (may with different Java
version and Maven version), you can run the following commands:
```bash
mvn clean package -DskipTests
@@ -80,7 +80,7 @@ Update the root `pom.xml` of the maven project (like the
apache/fluss project) t
```xml
<repositories>
<repository>
- <id>fluss-shaded-staging</id>
+ <id>fluss-staging</id>
<name>Temporary Staging Repo</name>
<url>https://repository.apache.org/content/repositories/orgapachefluss-${STAGED_REPO_ID}/</url>
</repository>
@@ -89,6 +89,23 @@ Update the root `pom.xml` of the maven project (like the
apache/fluss project) t
And then you can use the staged maven artifacts as dependencies in the project
and verify the new dependencies work.
+
+## Testing Features
+
+For any user-facing feature included in a release, we aim to ensure it is
functional, usable, and well-documented for the Fluss community.
+
+To support this, release managers can create and assign cross-team testing
issues that outline key scenarios to validate. These issues are open to—and
encouraged for—all community members to pick up and help verify.
+
+A great way to get started is by walking through the official Quickstart
Guide: https://fluss.apache.org/docs/quickstart/flink/ (please switch to the
documentation version currently under release).
+
+
+## Incubator Release Checklist
+
+The ASF Incubator has also prepared a release checklist, which you can refer
to when verifying the release:
+
+https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist
+
+
## Voting
Votes are cast by replying on the vote email on the dev mailing list, with
either +1, 0, -1.
diff --git
a/website/community/how-to-release/verifying-a-fluss-shaded-release.md
b/website/community/how-to-release/verifying-a-fluss-shaded-release.md
index 23f418d98..a7d242e92 100644
--- a/website/community/how-to-release/verifying-a-fluss-shaded-release.md
+++ b/website/community/how-to-release/verifying-a-fluss-shaded-release.md
@@ -1,6 +1,6 @@
---
title: Verifying a Fluss Shaded Release
-sidebar_position: 3
+sidebar_position: 5
---
# Verifying a Fluss Shaded Release
diff --git a/website/docs/maintenance/operations/upgrading.md
b/website/docs/maintenance/operations/upgrading.md
index 0b635ec27..f78d23282 100644
--- a/website/docs/maintenance/operations/upgrading.md
+++ b/website/docs/maintenance/operations/upgrading.md
@@ -80,10 +80,10 @@ Once this process is complete, the server upgrade will be
finished.
The compatibility between the Fluss client and the Fluss server is described
in the following table:
-| | Server 0.6 | Server 0.7 | Limitations |
+| | Server 0.7 | Server 0.8 | Limitations |
|------------|------------|------------|-------------|
-| Client 0.6 | ✔️ | ✔️ | |
| Client 0.7 | ✔️ | ✔️ | |
+| Client 0.8 | ✔️ | ✔️ | |
## Upgrading Fluss datalake tiering service