Skip to content

Update release instructions to not push tags until release is approved #7754

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 15 additions & 9 deletions dev/release/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,21 +109,21 @@ distribution servers.

While the official release artifact is a signed tarball, we also tag the commit it was created for convenience and code archaeology.

### Pick a Release Candidate (RC) number

Pick numbers in sequential order, with `1` for `rc1`, `2` for `rc2`, etc.

Use a string such as `43.0.0` as the `<version>`.

Create and push the tag thusly:
Create and push the tag thusly (for example, for version `4.1.0` and `rc2` would be `4.1.0-rc2`):

```shell
git fetch apache
git tag <version> apache/main
git tag <version>-<rc> apache/main
# push tag to apache
git push apache <version>
git push apache <version>-<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.
Expand Down Expand Up @@ -191,9 +191,15 @@ 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/arrow-4.1.0/, using the `release-tarball.sh` script:
Then, create a new release on GitHub using the tag `<version>` (e.g. `4.1.0`).

Rust Arrow Crates:
Push the release tag to github
```shell
git tag <version> <version>-<rc>
git push apache <version>
```

Move tarball to the release location in SVN, e.g. https://dist.apache.org/repos/dist/release/arrow/arrow-4.1.0/, using the `release-tarball.sh` script:

```shell
./dev/release/release-tarball.sh 4.1.0 2
Expand Down
2 changes: 1 addition & 1 deletion dev/release/create-tarball.sh
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ else
tar=tar
fi

release_hash=$(cd "${SOURCE_TOP_DIR}" && git rev-list --max-count=1 ${tag})
release_hash=$(cd "${SOURCE_TOP_DIR}" && git rev-list --max-count=1 ${tag}-rc${rc})
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that we need more changes in this file.

How about the following? It seems that we don't need release_hash anymore because we don't re-tag with the X.Y.Z-rcN approach.

diff --git a/dev/release/create-tarball.sh b/dev/release/create-tarball.sh
index a77ddbe757..2b5071d35b 100755
--- a/dev/release/create-tarball.sh
+++ b/dev/release/create-tarball.sh
@@ -45,14 +45,16 @@ SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
 SOURCE_TOP_DIR="$(cd "${SOURCE_DIR}/../../" && pwd)"
 
 if [ "$#" -ne 2 ]; then
-    echo "Usage: $0 <tag> <rc>"
+    echo "Usage: $0 <version> <rc>"
     echo "ex. $0 4.1.0 2"
   exit
 fi
 
-tag=$1
+version=$1
 rc=$2
 
+tag="${version}-rc${rc}"
+
 
 # mac tar doesn't have --delete, so use gnutar
 # e.g. brew install gtar
@@ -64,9 +66,12 @@ else
     tar=tar
 fi
 
-release_hash=$(cd "${SOURCE_TOP_DIR}" && git rev-list --max-count=1 ${tag})
+if ! gic -C "${SORUCE_TOP_DIR}" rev-list --max-count=1 ${tag}; then
+    echo "Cannot continue: unknown git tag: $tag"
+fi
+
 
-release=apache-arrow-rs-${tag}
+release=apache-arrow-rs-${version}
 distdir=${SOURCE_TOP_DIR}/dev/dist/${release}-rc${rc}
 tarname=${release}.tar.gz
 tarball=${distdir}/${tarname}
@@ -75,22 +80,18 @@ url="https://dist.apache.org/repos/dist/dev/arrow/${release}-rc${rc}"
 echo "Attempting to create ${tarball} from tag ${tag}"
 
 
-if [ -z "$release_hash" ]; then
-    echo "Cannot continue: unknown git tag: $tag"
-fi
-
 echo "Draft email for dev@arrow.apache.org mailing list"
 echo ""
 echo "---------------------------------------------------------"
 cat <<MAIL
 To: dev@arrow.apache.org
-Subject: [VOTE][RUST] Release Apache Arrow Rust ${tag} RC${rc}
+Subject: [VOTE][RUST] Release Apache Arrow Rust ${version} RC${rc}
 
 Hi,
 
 I would like to propose a release of Apache Arrow Rust Implementation, version ${tag}.
 
-This release candidate is based on commit: ${release_hash} [1]
+This release candidate is based on commit: ${tag} [1]
 
 The proposed release tarball and signatures are hosted at [2].
 
@@ -106,21 +107,22 @@ The vote will be open for at least 72 hours.
 [ ] +0
 [ ] -1 Do not release this as Apache Arrow Rust ${version} because...
 
-[1]: https://github.com/apache/arrow-rs/tree/${release_hash}
+[1]: https://github.com/apache/arrow-rs/tree/${tag}
 [2]: ${url}
-[3]: https://github.com/apache/arrow-rs/blob/${release_hash}/CHANGELOG.md
+[3]: https://github.com/apache/arrow-rs/blob/${tag}/CHANGELOG.md
 [4]: https://github.com/apache/arrow-rs/blob/master/dev/release/verify-release-candidate.sh
 MAIL
 echo "---------------------------------------------------------"
 
 
 
-# create <tarball> containing the files in git at $release_hash
-# the files in the tarball are prefixed with {tag} (e.g. 4.0.1)
+# create <tarball> containing the files in git at $tag
+# the files in the tarball are prefixed with {release}
+# (e.g. apache-arrow-rs-4.0.1)
 # use --delete to filter out `object_store` files
 mkdir -p ${distdir}
 (cd "${SOURCE_TOP_DIR}" && \
-     git archive ${release_hash} --prefix ${release}/ \
+     git archive ${tag} --prefix ${release}/ \
          | $tar --delete ${release}/'object_store' \
          | gzip > ${tarball})
 
@@ -138,4 +140,4 @@ gpg --armor --output ${tarball}.asc --detach-sig ${tarball}
 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}
-svn ci -m "Apache Arrow Rust ${tag} ${rc}" ${distdir}
+svn ci -m "Apache Arrow Rust ${version} ${rc}" ${distdir}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good to me -- thanks @kou


release=apache-arrow-rs-${tag}
distdir=${SOURCE_TOP_DIR}/dev/dist/${release}-rc${rc}
Expand Down
Loading