This is an automated email from the ASF dual-hosted git repository.
dru pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg-python.git
The following commit(s) were added to refs/heads/main by this push:
new 30d987f0 docs: more release docs improvements (#3104)
30d987f0 is described below
commit 30d987f0d60939397704332f8442d64163980e11
Author: Kevin Liu <[email protected]>
AuthorDate: Tue Mar 3 21:57:39 2026 -0500
docs: more release docs improvements (#3104)
---
mkdocs/docs/how-to-release.md | 34 ++++++++++++++++++++++++++--------
1 file changed, 26 insertions(+), 8 deletions(-)
diff --git a/mkdocs/docs/how-to-release.md b/mkdocs/docs/how-to-release.md
index 35ec2ef0..01a1b4d0 100644
--- a/mkdocs/docs/how-to-release.md
+++ b/mkdocs/docs/how-to-release.md
@@ -96,6 +96,9 @@ git checkout -b pyiceberg-0.8.x pyiceberg-0.8.0
# Cherry-pick commits for the upcoming patch release
git cherry-pick <commit>
+
+# Push the new branch
+git push [email protected]:apache/iceberg-python.git pyiceberg-0.8.x
```
### Create Tag
@@ -134,7 +137,11 @@ This action will generate two final artifacts:
If `gh` is available, watch the GitHub Action progress using:
```bash
+: "${GIT_TAG:?ERROR: GIT_TAG is not set or is empty}"
+
RUN_ID=$(gh run list --repo apache/iceberg-python --workflow "Python Build
Release Candidate" --branch "${GIT_TAG}" --event push --json databaseId -q
'.[0].databaseId')
+: "${RUN_ID:?ERROR: RUN_ID could not be determined}"
+
echo "Waiting for workflow to complete, this will take several minutes..."
gh run watch $RUN_ID --repo apache/iceberg-python
```
@@ -142,6 +149,8 @@ gh run watch $RUN_ID --repo apache/iceberg-python
and download the artifacts using:
```bash
+: "${RUN_ID:?ERROR: RUN_ID is not set or is empty}"
+
gh run download $RUN_ID --repo apache/iceberg-python
```
@@ -159,6 +168,9 @@ Navigate to the artifact directory. Generate signature and
checksum files:
* `.sha512` files: SHA-512 checksums for verifying file integrity.
```bash
+: "${VERSION:?ERROR: VERSION is not set or is empty}"
+: "${RC:?ERROR: RC is not set or is empty}"
+
(
cd svn-release-candidate-${VERSION}rc${RC}
@@ -177,14 +189,11 @@ The parentheses `()` create a subshell. Any changes to
the directory (`cd`) are
Now, upload the files from the same directory:
```bash
-export SVN_TMP_DIR=/tmp/iceberg-${VERSION}/
-svn checkout https://dist.apache.org/repos/dist/dev/iceberg $SVN_TMP_DIR
-
-export SVN_TMP_DIR_VERSIONED=${SVN_TMP_DIR}pyiceberg-$VERSION_WITH_RC/
-mkdir -p $SVN_TMP_DIR_VERSIONED
-cp svn-release-candidate-${VERSION}rc${RC}/* $SVN_TMP_DIR_VERSIONED
-svn add $SVN_TMP_DIR_VERSIONED
-svn ci -m "PyIceberg ${VERSION_WITH_RC}" ${SVN_TMP_DIR_VERSIONED}
+: "${VERSION:?ERROR: VERSION is not set or is empty}"
+: "${VERSION_WITH_RC:?ERROR: VERSION_WITH_RC is not set or is empty}"
+: "${RC:?ERROR: RC is not set or is empty}"
+
+svn import "svn-release-candidate-${VERSION}rc${RC}"
"https://dist.apache.org/repos/dist/dev/iceberg/pyiceberg-${VERSION_WITH_RC}"
-m "PyIceberg ${VERSION_WITH_RC}"
```
Verify the artifact is uploaded to
[https://dist.apache.org/repos/dist/dev/iceberg](https://dist.apache.org/repos/dist/dev/iceberg/).
@@ -215,6 +224,9 @@ Update the artifact directory to PyPi using `twine`. This
**won't** bump the ver
<!-- prettier-ignore-end -->
```bash
+: "${VERSION:?ERROR: VERSION is not set or is empty}"
+: "${RC:?ERROR: RC is not set or is empty}"
+
twine upload pypi-release-candidate-${VERSION}rc${RC}/*
```
@@ -227,6 +239,10 @@ Verify the artifact is uploaded to
[PyPi](https://pypi.org/project/pyiceberg/#hi
Final step is to generate the email to the dev mail list:
```bash
+: "${GIT_TAG:?ERROR: GIT_TAG is not set or is empty}"
+: "${VERSION:?ERROR: VERSION is not set or is empty}"
+: "${VERSION_WITH_RC:?ERROR: VERSION_WITH_RC is not set or is empty}"
+
export GIT_TAG_REF=$(git show-ref ${GIT_TAG})
export GIT_TAG_HASH=${GIT_TAG_REF:0:40}
export LAST_COMMIT_ID=$(git rev-list ${GIT_TAG} 2> /dev/null | head -n 1)
@@ -340,6 +356,8 @@ The latest version can be pushed to PyPi. Check out the
Apache SVN and make sure
<!-- prettier-ignore-end -->
```bash
+: "${VERSION:?ERROR: VERSION is not set or is empty}"
+
svn checkout
https://dist.apache.org/repos/dist/release/iceberg/pyiceberg-${VERSION}
/tmp/iceberg-dist-release/pyiceberg-${VERSION}
cd /tmp/iceberg-dist-release/pyiceberg-${VERSION}