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

JingsongLi pushed a commit to branch release-2.0
in repository https://gitbox.apache.org/repos/asf/paimon.git


The following commit(s) were added to refs/heads/release-2.0 by this push:
     new 69f474dfd4 [release] Use a single release version
69f474dfd4 is described below

commit 69f474dfd45185f68de169864ecedb5b548a9584
Author: JingsongLi <[email protected]>
AuthorDate: Fri Jul 31 21:35:16 2026 +0800

    [release] Use a single release version
---
 .github/workflows/release-python-publish.yml       | 16 +++++--
 .github/workflows/release-python.yml               | 20 ++++++---
 .github/workflows/release.yml                      |  4 ++
 docs/docs/project/creating-a-release.md            | 49 +++++++++++-----------
 docs/docs/project/verifying-a-release-candidate.md | 15 ++++---
 5 files changed, 63 insertions(+), 41 deletions(-)

diff --git a/.github/workflows/release-python-publish.yml 
b/.github/workflows/release-python-publish.yml
index a38eb34a09..d2c226d188 100644
--- a/.github/workflows/release-python-publish.yml
+++ b/.github/workflows/release-python-publish.yml
@@ -20,6 +20,10 @@ name: Release PyPaimon Publish
 
 on:
   workflow_call:
+    inputs:
+      release_version:
+        required: true
+        type: string
     secrets:
       TEST_PYPI_API_TOKEN:
         required: true
@@ -55,13 +59,19 @@ jobs:
         run: |
           set -euo pipefail
 
-          base_version="$(
+          source_version="$(
             sed -n 's/^VERSION = "\(.*\)"/\1/p' \
               paimon-python/setup.py
           )"
-          expected_version="${base_version}"
+          release_version="${{ inputs.release_version }}"
+          if [[ "${source_version}" != "${release_version}" ]]; then
+            echo "PyPaimon version ${source_version:-missing} does not match 
Paimon ${release_version}" >&2
+            exit 1
+          fi
+
+          expected_version="${release_version}"
           if [[ "${GITHUB_REF_NAME}" == *-rc* ]]; then
-            expected_version="${base_version}rc${GITHUB_REF_NAME##*-rc}"
+            expected_version="${release_version}rc${GITHUB_REF_NAME##*-rc}"
           fi
 
           test -f "dist/pypaimon-${expected_version}.tar.gz"
diff --git a/.github/workflows/release-python.yml 
b/.github/workflows/release-python.yml
index 5f264aa137..7b2aca7ad1 100644
--- a/.github/workflows/release-python.yml
+++ b/.github/workflows/release-python.yml
@@ -23,7 +23,16 @@ name: Release PyPaimon Package
 
 on:
   workflow_call:
+    inputs:
+      release_version:
+        required: true
+        type: string
   workflow_dispatch:
+    inputs:
+      release_version:
+        description: Paimon release version
+        required: true
+        type: string
 
 concurrency:
   group: release-python-${{ github.ref }}
@@ -51,19 +60,20 @@ jobs:
         run: |
           set -euo pipefail
 
-          base_version="$(
+          source_version="$(
             sed -n 's/^VERSION = "\(.*\)"/\1/p' \
               paimon-python/setup.py
           )"
-          if [[ -z "${base_version}" || "${base_version}" == *dev* || 
"${base_version}" == *rc* ]]; then
-            echo "PyPaimon release base version is invalid: 
${base_version:-missing}" >&2
+          release_version="${{ inputs.release_version }}"
+          if [[ "${source_version}" != "${release_version}" ]]; then
+            echo "PyPaimon version ${source_version:-missing} does not match 
Paimon ${release_version}" >&2
             exit 1
           fi
 
-          package_version="${base_version}"
+          package_version="${release_version}"
           if [[ "${GITHUB_REF}" == refs/tags/*-rc* ]]; then
             rc_number="${GITHUB_REF_NAME##*-rc}"
-            package_version="${base_version}rc${rc_number}"
+            package_version="${release_version}rc${rc_number}"
             sed -i \
               "s/^VERSION = \".*\"/VERSION = \"${package_version}\"/" \
               paimon-python/setup.py
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 85461490ba..0e81743deb 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -124,6 +124,8 @@ jobs:
     name: PyPaimon package
     needs: validation
     uses: ./.github/workflows/release-python.yml
+    with:
+      release_version: ${{ needs.validation.outputs.release_version }}
 
   python-publish:
     name: PyPaimon publish
@@ -136,6 +138,8 @@ jobs:
       (needs.java.result == 'success' ||
        needs.validation.outputs.release_kind == 'final')
     uses: ./.github/workflows/release-python-publish.yml
+    with:
+      release_version: ${{ needs.validation.outputs.release_version }}
     secrets:
       TEST_PYPI_API_TOKEN: ${{ secrets.TEST_PYPI_API_TOKEN }}
       PYPI_API_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
diff --git a/docs/docs/project/creating-a-release.md 
b/docs/docs/project/creating-a-release.md
index bba87c010f..0ac9049017 100644
--- a/docs/docs/project/creating-a-release.md
+++ b/docs/docs/project/creating-a-release.md
@@ -46,8 +46,8 @@ Maven project version and `paimon-python/setup.py` version 
must be equal.
 | --- | --- | --- |
 | Paimon source | `apache-paimon-PAIMON_VERSION-src.tgz`, `.asc`, `.sha512` | 
ASF distribution |
 | Java convenience artifacts | Maven artifacts built in the JDK 8, 11, and 17 
lanes | Apache Nexus staging, then Maven Central |
-| PyPaimon source | `pypaimon-PYPAIMON_VERSION.tar.gz`, `.asc`, `.sha512` | 
ASF distribution |
-| Python convenience package | `pypaimon==PYPAIMON_VERSIONrcRC_NUMBER` for an 
RC | TestPyPI, then `pypaimon==PYPAIMON_VERSION` on PyPI |
+| PyPaimon source | `pypaimon-PAIMON_VERSION.tar.gz`, `.asc`, `.sha512` | ASF 
distribution |
+| Python convenience package | `pypaimon==PAIMON_VERSIONrcRC_NUMBER` for an RC 
| TestPyPI, then `pypaimon==PAIMON_VERSION` on PyPI |
 
 A combined release vote covers both signed source candidates. This guide does
 not define an independent PyPaimon release. Before releasing PyPaimon
@@ -98,7 +98,7 @@ The Java jobs use `-Dgpg.skip=true` and never receive Nexus 
credentials or a
 GPG private key. Their artifacts are build evidence, not the Maven staging
 repositories used for the vote. The Python RC job uses the
 `TEST_PYPI_API_TOKEN` repository Actions secret to publish
-`PYPAIMON_VERSIONrcRC_NUMBER` to TestPyPI. The final job uses the
+`PAIMON_VERSIONrcRC_NUMBER` to TestPyPI. The final job uses the
 `PYPI_API_TOKEN` repository Actions secret to publish to PyPI. The release
 workflow passes only these two secrets to the reusable publishing workflow.
 
@@ -142,7 +142,6 @@ For the 2.0.0 release, use matching Java and Python 
versions:
 
 ```shell
 PAIMON_VERSION="2.0.0"
-PYPAIMON_VERSION="2.0.0"
 RC_NUMBER="1"
 
 RC_REF="release-${PAIMON_VERSION}-rc${RC_NUMBER}"
@@ -186,7 +185,7 @@ NEW_VERSION="${PAIMON_VERSION}" \
 ```
 
 Set `VERSION` in `paimon-python/setup.py` to the final
-`PYPAIMON_VERSION`, without `.dev` or an RC suffix. The release workflow
+`PAIMON_VERSION`, without `.dev` or an RC suffix. The release workflow
 derives the TestPyPI version by appending `rcRC_NUMBER`; the source candidate
 keeps the final version.
 
@@ -212,7 +211,7 @@ same-named local RC branch. Use an explicit tag ref when 
pushing:
 
 ```shell
 git tag -s "${RC_REF}" \
-  -m "Apache Paimon ${PAIMON_VERSION} and PyPaimon ${PYPAIMON_VERSION} 
RC${RC_NUMBER}"
+  -m "Apache Paimon ${PAIMON_VERSION} and PyPaimon ${PAIMON_VERSION} 
RC${RC_NUMBER}"
 git tag -v "${RC_REF}"
 
 git push origin \
@@ -291,17 +290,17 @@ RELEASE_VERSION="${PAIMON_VERSION}" \
 cd paimon-python
 python3 setup.py sdist
 gpg --armor --detach-sig \
-  "dist/pypaimon-${PYPAIMON_VERSION}.tar.gz"
+  "dist/pypaimon-${PAIMON_VERSION}.tar.gz"
 
 if command -v sha512sum >/dev/null 2>&1; then
-  sha512sum "dist/pypaimon-${PYPAIMON_VERSION}.tar.gz" \
-    > "dist/pypaimon-${PYPAIMON_VERSION}.tar.gz.sha512"
+  sha512sum "dist/pypaimon-${PAIMON_VERSION}.tar.gz" \
+    > "dist/pypaimon-${PAIMON_VERSION}.tar.gz.sha512"
 else
-  shasum -a 512 "dist/pypaimon-${PYPAIMON_VERSION}.tar.gz" \
-    > "dist/pypaimon-${PYPAIMON_VERSION}.tar.gz.sha512"
+  shasum -a 512 "dist/pypaimon-${PAIMON_VERSION}.tar.gz" \
+    > "dist/pypaimon-${PAIMON_VERSION}.tar.gz.sha512"
 fi
 
-cp "dist/pypaimon-${PYPAIMON_VERSION}.tar.gz"* ../release/
+cp "dist/pypaimon-${PAIMON_VERSION}.tar.gz"* ../release/
 cd ..
 ```
 
@@ -316,15 +315,15 @@ mkdir 
"paimon-dist-dev/paimon-${PAIMON_VERSION}-rc${RC_NUMBER}"
 cp "release/apache-paimon-${PAIMON_VERSION}-src.tgz"* \
   "paimon-dist-dev/paimon-${PAIMON_VERSION}-rc${RC_NUMBER}/"
 
-mkdir "paimon-dist-dev/pypaimon-${PYPAIMON_VERSION}-rc${RC_NUMBER}"
-cp "release/pypaimon-${PYPAIMON_VERSION}.tar.gz"* \
-  "paimon-dist-dev/pypaimon-${PYPAIMON_VERSION}-rc${RC_NUMBER}/"
+mkdir "paimon-dist-dev/pypaimon-${PAIMON_VERSION}-rc${RC_NUMBER}"
+cp "release/pypaimon-${PAIMON_VERSION}.tar.gz"* \
+  "paimon-dist-dev/pypaimon-${PAIMON_VERSION}-rc${RC_NUMBER}/"
 
 svn add \
   "paimon-dist-dev/paimon-${PAIMON_VERSION}-rc${RC_NUMBER}" \
-  "paimon-dist-dev/pypaimon-${PYPAIMON_VERSION}-rc${RC_NUMBER}"
+  "paimon-dist-dev/pypaimon-${PAIMON_VERSION}-rc${RC_NUMBER}"
 svn commit -m \
-  "Stage Paimon ${PAIMON_VERSION} and PyPaimon ${PYPAIMON_VERSION} 
RC${RC_NUMBER}" \
+  "Stage Paimon ${PAIMON_VERSION} and PyPaimon ${PAIMON_VERSION} 
RC${RC_NUMBER}" \
   paimon-dist-dev
 ```
 
@@ -341,12 +340,12 @@ Send a plain-text vote to `[email protected]`. Keep 
it open for at least
 binding `+1` than binding `-1` votes.
 
 ```text
-Subject: [VOTE] Release Apache Paimon ${PAIMON_VERSION} and PyPaimon 
${PYPAIMON_VERSION} (RC${RC_NUMBER})
+Subject: [VOTE] Release Apache Paimon ${PAIMON_VERSION} and PyPaimon 
${PAIMON_VERSION} (RC${RC_NUMBER})
 
 Hi everyone,
 
 Please review and vote on Apache Paimon ${PAIMON_VERSION} and
-PyPaimon ${PYPAIMON_VERSION}, release candidate ${RC_NUMBER}.
+PyPaimon ${PAIMON_VERSION}, release candidate ${RC_NUMBER}.
 
 [ ] +1 Approve
 [ ]  0 No opinion
@@ -356,7 +355,7 @@ Paimon source candidate:
 
https://dist.apache.org/repos/dist/dev/paimon/paimon-${PAIMON_VERSION}-rc${RC_NUMBER}/
 
 PyPaimon source candidate:
-https://dist.apache.org/repos/dist/dev/paimon/pypaimon-${PYPAIMON_VERSION}-rc${RC_NUMBER}/
+https://dist.apache.org/repos/dist/dev/paimon/pypaimon-${PAIMON_VERSION}-rc${RC_NUMBER}/
 
 Signed Git tag:
 release-${PAIMON_VERSION}-rc${RC_NUMBER}
@@ -376,7 +375,7 @@ Closed Java staging repositories:
 <JDK_17_NEXUS_URL>
 
 PyPaimon RC:
-https://test.pypi.org/project/pypaimon/${PYPAIMON_VERSION}rc${RC_NUMBER}/
+https://test.pypi.org/project/pypaimon/${PAIMON_VERSION}rc${RC_NUMBER}/
 
 Verification guide:
 
https://github.com/apache/paimon/blob/release-${PAIMON_VERSION}-rc${RC_NUMBER}/docs/docs/project/verifying-a-release-candidate.md
@@ -425,9 +424,9 @@ svn mv -m "Release Apache Paimon ${PAIMON_VERSION}" \
   
"https://dist.apache.org/repos/dist/dev/paimon/paimon-${PAIMON_VERSION}-rc${RC_NUMBER}";
 \
   "https://dist.apache.org/repos/dist/release/paimon/paimon-${PAIMON_VERSION}";
 
-svn mv -m "Release PyPaimon ${PYPAIMON_VERSION}" \
-  
"https://dist.apache.org/repos/dist/dev/paimon/pypaimon-${PYPAIMON_VERSION}-rc${RC_NUMBER}";
 \
-  
"https://dist.apache.org/repos/dist/release/paimon/pypaimon-${PYPAIMON_VERSION}";
+svn mv -m "Release PyPaimon ${PAIMON_VERSION}" \
+  
"https://dist.apache.org/repos/dist/dev/paimon/pypaimon-${PAIMON_VERSION}-rc${RC_NUMBER}";
 \
+  
"https://dist.apache.org/repos/dist/release/paimon/pypaimon-${PAIMON_VERSION}";
 ```
 
 ### Promote convenience artifacts
@@ -437,7 +436,7 @@ svn mv -m "Release PyPaimon ${PYPAIMON_VERSION}" \
 2. Release those exact closed repositories to Maven Central. Do not run Maven
    deploy again.
 3. Confirm that the final tag's PyPI publish job builds
-   `pypaimon==PYPAIMON_VERSION` from the approved tag commit and does not 
change
+   `pypaimon==PAIMON_VERSION` from the approved tag commit and does not change
    project source.
 4. Verify Maven Central and PyPI before announcing the release.
 
diff --git a/docs/docs/project/verifying-a-release-candidate.md 
b/docs/docs/project/verifying-a-release-candidate.md
index 1beece391c..9853d9cbea 100644
--- a/docs/docs/project/verifying-a-release-candidate.md
+++ b/docs/docs/project/verifying-a-release-candidate.md
@@ -36,14 +36,13 @@ Take all values and URLs from the vote email:
 
 ```shell
 PAIMON_VERSION="2.0.0"
-PYPAIMON_VERSION="2.0.0"
 RC_NUMBER="1"
 RC_TAG="release-${PAIMON_VERSION}-rc${RC_NUMBER}"
 
 PAIMON_RC_DIR="paimon-${PAIMON_VERSION}-rc${RC_NUMBER}"
 PAIMON_ARCHIVE="apache-paimon-${PAIMON_VERSION}-src.tgz"
-PYPAIMON_RC_DIR="pypaimon-${PYPAIMON_VERSION}-rc${RC_NUMBER}"
-PYPAIMON_ARCHIVE="pypaimon-${PYPAIMON_VERSION}.tar.gz"
+PYPAIMON_RC_DIR="pypaimon-${PAIMON_VERSION}-rc${RC_NUMBER}"
+PYPAIMON_ARCHIVE="pypaimon-${PAIMON_VERSION}.tar.gz"
 ```
 
 Download the candidates from ASF dist dev, not from a third-party mirror:
@@ -115,7 +114,7 @@ Check at least the following:
 - The Paimon archive has exactly one top-level directory named
   `paimon-PAIMON_VERSION`.
 - The PyPaimon archive has exactly one top-level directory named
-  `pypaimon-PYPAIMON_VERSION`.
+  `pypaimon-PAIMON_VERSION`.
 - `LICENSE`, `NOTICE`, README files, build files, dependency declarations, and
   required source files are present and correct.
 - No Git metadata, IDE state, credentials, Maven `target` directories, Python
@@ -125,7 +124,7 @@ Check at least the following:
   and is recorded in `LICENSE` or `NOTICE` where required.
 - Maven POMs use `PAIMON_VERSION` without `-SNAPSHOT`.
 - `paimon-python/setup.py` and PyPaimon package metadata use
-  `PYPAIMON_VERSION` without `.dev`.
+  `PAIMON_VERSION` without `.dev`.
 
 Extract the Paimon candidate:
 
@@ -285,9 +284,9 @@ python3 -m venv pypaimon-rc-venv
 . pypaimon-rc-venv/bin/activate
 python -m pip install --upgrade pip setuptools wheel
 
-cd "pypaimon-${PYPAIMON_VERSION}"
+cd "pypaimon-${PAIMON_VERSION}"
 python setup.py sdist bdist_wheel
-python -m pip install "dist/pypaimon-${PYPAIMON_VERSION}"*.whl
+python -m pip install "dist/pypaimon-${PAIMON_VERSION}"*.whl
 python -c "import pypaimon; print('PyPaimon import OK')"
 cd ..
 ```
@@ -326,7 +325,7 @@ python3 -m venv pypaimon-testpypi-venv
 python -m pip install \
   --index-url https://test.pypi.org/simple/ \
   --extra-index-url https://pypi.org/simple/ \
-  "pypaimon==${PYPAIMON_VERSION}rc${RC_NUMBER}"
+  "pypaimon==${PAIMON_VERSION}rc${RC_NUMBER}"
 python -c "import pypaimon; print('TestPyPI package OK')"
 ```
 

Reply via email to