This is an automated email from the ASF dual-hosted git repository.
alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-rs-object-store.git
The following commit(s) were added to refs/heads/main by this push:
new 19be0b1 Update release process to use RC tags (#796)
19be0b1 is described below
commit 19be0b11ff83831fcf968aee448f6f216425b0ad
Author: Andrew Lamb <[email protected]>
AuthorDate: Fri Jul 10 08:55:06 2026 -0400
Update release process to use RC tags (#796)
---
dev/release/README.md | 72 ++++++++++++++++---------------------------
dev/release/create-tarball.sh | 55 +++++++++++++++++----------------
2 files changed, 55 insertions(+), 72 deletions(-)
diff --git a/dev/release/README.md b/dev/release/README.md
index 0830386..bbcc3f1 100644
--- a/dev/release/README.md
+++ b/dev/release/README.md
@@ -110,28 +110,29 @@ create a release candidate using the following steps.
Note you need to
be a committer to run these scripts as they upload to the apache `svn`
distribution servers.
-### Create git tag for the release:
+### Pick a Release Candidate (RC) number
+
+Pick numbers in sequential order, with `1` for `rc1`, `2` for `rc2`, etc.
+
+### Create git tag for the release candidate:
While the official release artifact is a signed tarball, we also tag the
commit it was created for convenience and code archaeology.
-Use a string such as `v0.4.0` as the `<version>`.
+Use a string such as `0.4.0` as the `<version>`.
-Create and push the tag thusly:
+Create and push an RC tag thusly. For example, version `0.4.0` and RC
+number `2` would be `v0.4.0-rc2`:
```shell
git fetch apache
-git tag <version> apache/main
+git tag v<version>-rc<rc> apache/main
# push tag to apache
-git push apache <version>
+git push apache v<version>-rc<rc>
```
-### Pick an Release Candidate (RC) number
-
-Pick numbers in sequential order, with `1` for `rc1`, `2` for `rc2`, etc.
-
### Create, sign, and upload tarball
-Run `create-tarball.sh` with the `<version>` tag and `<rc>` and you found in
previous steps.
+Run `create-tarball.sh` with the `<version>` and `<rc>` you found in previous
steps.
```shell
./dev/release/create-tarball.sh 0.11.1 1
@@ -148,41 +149,8 @@ The `create-tarball.sh` script
### Vote on Release Candidate tarball
-Send an email, based on the output from the script to [email protected].
The email should look like
-
-```
-Draft email for [email protected] mailing list
-
----------------------------------------------------------
-To: [email protected]
-Subject: [VOTE][RUST] Release Apache Arrow Rust Object Store 0.11.1 RC1
-
-Hi,
-
-I would like to propose a release of Apache Arrow Rust Object
-Store Implementation, version 0.11.1.
-
-This release candidate is based on commit:
b945b15de9085f5961a478d4f35b0c5c3427e248 [1]
-
-The proposed release tarball and signatures are hosted at [2].
-
-The changelog is located at [3].
-
-Please download, verify checksums and signatures, run the unit tests,
-and vote on the release. There is a script [4] that automates some of
-the verification.
-
-The vote will be open for at least 72 hours.
-
-[ ] +1 Release this as Apache Arrow Rust Object Store
-[ ] +0
-[ ] -1 Do not release this as Apache Arrow Rust Object Store because...
-
-[1]:
https://github.com/apache/arrow-rs-object-store/tree/b945b15de9085f5961a478d4f35b0c5c3427e248
-[2]:
https://dist.apache.org/repos/dist/dev/arrow/apache-arrow-object-store-rs-0.11.1-rc1/
-[3]:
https://github.com/apache/arrow-rs-object-store/blob/b945b15de9085f5961a478d4f35b0c5c3427e248/CHANGELOG.md
-[4]:
https://github.com/apache/arrow-rs-object-store/blob/main/dev/release/verify-release-candidate.sh
-```
+Send an email, based on the output from the script to [email protected].
+See an [example of how the email should
look](https://lists.apache.org/thread/29v3kjk5x6nlqrgt1kq6c7o8km0wn1w9).
For the release to become "official" it needs at least three Apache Arrow PMC
members to vote +1 on it.
@@ -200,7 +168,19 @@ If the release is not approved, fix whatever the problem
is and try again with t
### If the release is approved,
-Move tarball to the release location in SVN, e.g.
https://dist.apache.org/repos/dist/release/arrow/apache-arrow-object-store-rs-4.1.0-rc4/,
using the `release-tarball.sh` script:
+Then, create a new release on GitHub using the tag `v<version>` (e.g.
+`v4.1.0`).
+
+Push the release tag to GitHub:
+
+```shell
+git tag v<version> v<version>-rc<rc>
+git push apache v<version>
+```
+
+Move tarball to the release location in SVN, e.g.
+https://dist.apache.org/repos/dist/release/arrow/arrow-object-store-rs-4.1.0/,
+using the `release-tarball.sh` script:
```shell
./dev/release/release-tarball.sh 4.1.0 2
diff --git a/dev/release/create-tarball.sh b/dev/release/create-tarball.sh
index f57a147..e41c967 100755
--- a/dev/release/create-tarball.sh
+++ b/dev/release/create-tarball.sh
@@ -24,7 +24,7 @@
# email for sending to the [email protected] list for a formal
# vote.
#
-# Note the tags are expected to be `object_sore_<version>`
+# Note the tags are expected to be `v<version>-rc<rc>`
#
# See release/README.md for full release instructions
#
@@ -53,7 +53,7 @@ fi
object_store_version=$1
rc=$2
-tag=v${object_store_version}
+tag=v${object_store_version}-rc${rc}
release=apache-arrow-object-store-rs-${object_store_version}
distdir=${SOURCE_TOP_DIR}/dev/dist/${release}-rc${rc}
@@ -61,13 +61,29 @@ tarname=${release}.tar.gz
tarball=${distdir}/${tarname}
url="https://dist.apache.org/repos/dist/dev/arrow/${release}-rc${rc}"
+if ! release_hash=$(cd "${SOURCE_TOP_DIR}" && git rev-list --max-count=1
${tag} 2>/dev/null); then
+ echo "Cannot continue: unknown git tag: $tag"
+ exit 1
+fi
+
echo "Attempting to create ${tarball} from tag ${tag}"
-release_hash=$(cd "${SOURCE_TOP_DIR}" && git rev-list --max-count=1 ${tag})
+# create <tarball> containing the files in git at $release_hash
+# the files in the tarball are prefixed with {release} (e.g.
apache-arrow-object-store-rs-0.4.0)
+mkdir -p ${distdir}
+(cd "${SOURCE_TOP_DIR}" && git archive ${release_hash} --prefix ${release}/ |
gzip > ${tarball})
-if [ -z "$release_hash" ]; then
- echo "Cannot continue: unknown git tag: $tag"
-fi
+echo "Running rat license checker on ${tarball}"
+${SOURCE_DIR}/../../dev/release/run-rat.sh ${tarball}
+
+echo "Signing tarball and creating checksums"
+gpg --armor --output ${tarball}.asc --detach-sig ${tarball}
+# create signing with relative path of tarball
+# so that they can be verified with a command such as
+# shasum --check apache-arrow-rs-4.1.0-rc2.tar.gz.sha512
+(cd ${distdir} && shasum -a 256 ${tarname}) > ${tarball}.sha256
+(cd ${distdir} && shasum -a 512 ${tarname}) > ${tarball}.sha512
+sha256=$(cut -d ' ' -f 1 "${tarball}.sha256")
echo "Draft email for [email protected] mailing list"
echo ""
@@ -81,46 +97,33 @@ Hi,
I would like to propose a release of Apache Arrow Rust Object
Store Implementation, version ${object_store_version}.
-This release candidate is based on commit: ${release_hash} [1]
+This release candidate is based on commit: ${release_hash} [1].
+The SHA256 of the release candidate is: ${sha256}
The proposed release tarball and signatures are hosted at [2].
The changelog is located at [3].
+The release tracking issue is: [5]
+
Please download, verify checksums and signatures, run the unit tests,
and vote on the release. There is a script [4] that automates some of
the verification.
The vote will be open for at least 72 hours.
-[ ] +1 Release this as Apache Arrow Rust Object Store ${version}
+[ ] +1 Release this as Apache Arrow Rust Object Store ${object_store_version}
[ ] +0
-[ ] -1 Do not release this as Apache Arrow Rust Object Store ${version}
because...
+[ ] -1 Do not release this as Apache Arrow Rust Object Store
${object_store_version} because...
[1]: https://github.com/apache/arrow-rs-object-store/tree/${release_hash}
[2]: ${url}
[3]:
https://github.com/apache/arrow-rs-object-store/blob/${release_hash}/CHANGELOG.md
[4]:
https://github.com/apache/arrow-rs-object-store/blob/main/dev/release/verify-release-candidate.sh
+[5]: RELEASE_ISSUE
MAIL
echo "---------------------------------------------------------"
-
-# create <tarball> containing the files in git at $release_hash
-# the files in the tarball are prefixed with {tag=} (e.g. 0.4.0)
-mkdir -p ${distdir}
-(cd "${SOURCE_TOP_DIR}" && git archive ${release_hash} --prefix ${release}/ |
gzip > ${tarball})
-
-echo "Running rat license checker on ${tarball}"
-${SOURCE_DIR}/../../dev/release/run-rat.sh ${tarball}
-
-echo "Signing tarball and creating checksums"
-gpg --armor --output ${tarball}.asc --detach-sig ${tarball}
-# create signing with relative path of tarball
-# so that they can be verified with a command such as
-# shasum --check apache-arrow-rs-4.1.0-rc2.tar.gz.sha512
-(cd ${distdir} && shasum -a 256 ${tarname}) > ${tarball}.sha256
-(cd ${distdir} && shasum -a 512 ${tarname}) > ${tarball}.sha512
-
echo "Uploading to apache dist/dev to ${url}"
svn co --depth=empty https://dist.apache.org/repos/dist/dev/arrow
${SOURCE_TOP_DIR}/dev/dist
svn add ${distdir}