diff --git a/dev/release/README.md b/dev/release/README.md index 5b521368ea44..3e57a7a6a7de 100644 --- a/dev/release/README.md +++ b/dev/release/README.md @@ -105,25 +105,25 @@ 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. +### 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: 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 `43.0.0` as the ``. -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 apache/main +git tag - apache/main # push tag to apache -git push apache +git push apache - ``` -### 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 `` tag and `` and you found in previous steps. @@ -191,9 +191,16 @@ 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 `` (e.g. `4.1.0`). -Rust Arrow Crates: +Push the release tag to github + +```shell +git tag - +git push apache +``` + +Move tarball to the release location in SVN, e.g. https://dist.apache.org/repos/dist/release/arrow/arrow-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 8b92509104c8..b75313b6f0d6 100755 --- a/dev/release/create-tarball.sh +++ b/dev/release/create-tarball.sh @@ -45,13 +45,14 @@ SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SOURCE_TOP_DIR="$(cd "${SOURCE_DIR}/../../" && pwd)" if [ "$#" -ne 2 ]; then - echo "Usage: $0 " + echo "Usage: $0 " 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 @@ -64,9 +65,12 @@ else tar=tar fi -release_hash=$(cd "${SOURCE_TOP_DIR}" && git rev-list --max-count=1 ${tag}) +if ! git -C "${SOURCE_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 +79,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 < containing the files in git at $release_hash -# the files in the tarball are prefixed with {tag} (e.g. 4.0.1) -# use --delete to filter out `object_store` files +# create containing the files in git at $tag +# the files in the tarball are prefixed with {release} +# (e.g. apache-arrow-rs-4.0.1) mkdir -p ${distdir} (cd "${SOURCE_TOP_DIR}" && \ - git archive ${release_hash} --prefix ${release}/ \ - | $tar --delete ${release}/'object_store' \ + git archive ${tag} --prefix ${release}/ \ | gzip > ${tarball}) echo "Running rat license checker on ${tarball}" @@ -138,4 +137,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} \ No newline at end of file