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 c243b82a35 [release] Fix RC verification and Java packaging
c243b82a35 is described below
commit c243b82a357435171854eaa5cb8ee4427aee6e7d
Author: JingsongLi <[email protected]>
AuthorDate: Sat Aug 1 21:08:49 2026 +0800
[release] Fix RC verification and Java packaging
---
.github/workflows/release-java.yml | 5 ++++-
docs/docs/project/creating-a-release.md | 12 +++++++-----
docs/docs/project/verifying-a-release-candidate.md | 9 ++++++---
3 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/.github/workflows/release-java.yml
b/.github/workflows/release-java.yml
index 66dbdbf9ec..65fbde7166 100644
--- a/.github/workflows/release-java.yml
+++ b/.github/workflows/release-java.yml
@@ -284,12 +284,15 @@ jobs:
exit 1
fi
if [[ "${packaging}" == "jar" ]]; then
- for classifier in '' '-sources' '-javadoc'; do
+ for classifier in '' '-sources'; do
if [[ ! -f "${artifact_base}${classifier}.jar" ]]; then
echo "Missing release JAR:
${artifact_base}${classifier}.jar" >&2
exit 1
fi
done
+ if [[ ! -f "${artifact_base}-javadoc.jar" ]]; then
+ echo "No Javadoc JAR was produced for
${group_id}:${artifact_id}"
+ fi
fi
done < "${expected_projects}"
diff --git a/docs/docs/project/creating-a-release.md
b/docs/docs/project/creating-a-release.md
index 9e501d4803..5476d1ed6a 100644
--- a/docs/docs/project/creating-a-release.md
+++ b/docs/docs/project/creating-a-release.md
@@ -87,7 +87,7 @@ The workflow has the following contract:
| Java 8 | Use Temurin 8 to deploy the default reactor with Spark 3 and Flink
1 into a local Maven repository image |
| Java 11 | Use Temurin 11 to deploy Flink 2 and Iceberg into a local Maven
repository image |
| Java 17 | Use Temurin 17 to deploy Spark 4 into a local Maven repository
image |
-| Java repository | Require every deploy-enabled effective-POM project and its
POM, main JAR, source JAR, and Javadoc JAR; merge all three lanes; reject
conflicting coordinates; then upload the complete unsigned Maven repository
image, checksums, manifests, and logs |
+| Java repository | Require every deploy-enabled effective-POM project and its
POM, main JAR, and source JAR; retain Javadoc JARs where Maven produces them;
merge all three lanes; reject conflicting coordinates; then upload the complete
unsigned Maven repository image, checksums, manifests, and logs |
| Python package | Build and validate the PyPaimon source distribution and
universal wheel, then upload them as workflow artifacts |
| Python publish | Publish an RC to TestPyPI or a final tag to PyPI after
Python packaging passes, without waiting for Java packaging |
@@ -100,8 +100,9 @@ release blocker.
The Java jobs run independently of the common validation and Python jobs. They
use `-Dgpg.skip=true`, deploy only to runner-local file repositories, and never
receive Nexus credentials or a GPG private key. The combined repository image
-contains POMs, main artifacts, source JARs, Javadoc JARs, and Maven-generated
-checksums. It is the input to the RM's local signing and Nexus
+contains POMs, main artifacts, source JARs, Javadoc JARs produced by Maven, and
+Maven-generated checksums. Scala-only and wrapper modules may not produce a
+Javadoc JAR. The image is the input to the RM's local signing and Nexus
staging steps, not itself an ASF release. The Python RC job uses the
`TEST_PYPI_API_TOKEN` repository Actions secret to publish
`PAIMON_VERSIONrcRC_NUMBER` to TestPyPI. The final job uses the
@@ -152,6 +153,7 @@ For the 2.0.0 release, use matching Java and Python
versions:
```shell
PAIMON_VERSION="2.0.0"
RC_NUMBER="1"
+RELEASE_BRANCH="release-2.0"
RC_REF="release-${PAIMON_VERSION}-rc${RC_NUMBER}"
RELEASE_TAG="release-${PAIMON_VERSION}"
@@ -165,8 +167,8 @@ directories, vote email, and Java package manifests.
```shell
git clone https://github.com/apache/paimon.git paimon-release
cd paimon-release
-git checkout master
-git pull --ff-only origin master
+git checkout "${RELEASE_BRANCH}"
+git pull --ff-only origin "${RELEASE_BRANCH}"
git status --short
```
diff --git a/docs/docs/project/verifying-a-release-candidate.md
b/docs/docs/project/verifying-a-release-candidate.md
index 6a4196b5ef..145cbaf345 100644
--- a/docs/docs/project/verifying-a-release-candidate.md
+++ b/docs/docs/project/verifying-a-release-candidate.md
@@ -137,7 +137,7 @@ its source package and removes that temporary directory
when it finishes:
```shell
cd "paimon-${PAIMON_VERSION}"
-mvn -ntp -DskipTests apache-rat:check
+mvn -N -ntp -DskipTests apache-rat:check
cd ..
SOURCE_PACKAGE="${PYPAIMON_ARCHIVE}" \
@@ -221,7 +221,9 @@ For the staging repository:
vote.
- Confirm that the version is `PAIMON_VERSION`, never a snapshot.
- Confirm that each published module has its POM, main artifact, source JAR,
- Javadoc JAR, detached signatures, and checksums where applicable.
+ detached signatures, and checksums where applicable. Confirm Javadoc JARs for
+ modules where Maven produces them; Scala-only and wrapper modules may not
+ produce one.
- Inspect shaded and bundled JARs for the required `META-INF/LICENSE` and
`META-INF/NOTICE` content and for unexpected duplicate or bundled
dependencies.
@@ -321,7 +323,8 @@ Open the workflow run linked in the vote email and confirm:
- the combined Java repository artifact has the expected tag, commit,
manifest, and SHA-512 checksums and identifies all three lanes;
- each lane's deploy-enabled expected-project inventory matches its POMs, main
- JARs, source JARs, and Javadoc JARs in the combined repository;
+ JARs, and source JARs in the combined repository, with Javadoc JARs retained
+ where Maven produces them;
- the Python packaging and Python publishing job results are clearly recorded;
- the logs show the expected JDK and Python versions;
- the TestPyPI version equals the version in the vote email;