PARQUET-1687: Update release process (#155)
Update prepare-release.sh to create RC tags and keep using the current
RC version with SNAPSHOT for development.
Update source-release.sh to retrieve the hash of the RC tag.
Create the new script finalize-release to create the final release tag
and update the development version.
diff --git a/dev/finalize-release b/dev/finalize-release
new file mode 100755
index 0000000..eef6720
--- /dev/null
+++ b/dev/finalize-release
@@ -0,0 +1,41 @@
+#!/bin/bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+set -e
+
+if [ -z "$3" ]; then
+ cat <<EOF
+Usage: $0 <release-version> <rc-num> <new-development-version-without-SNAPSHOT-suffix>
+Example: $0 2.7.0 0 2.8.0
+EOF
+ exit 1
+fi
+
+release_version="$1"
+release_tag="apache-parquet-format-$release_version"
+rc_tag="$release_tag-rc$2"
+new_development_version="$3-SNAPSHOT"
+
+git tag -am "Release Apache Parquet Format $release_version" "$release_tag" "$rc_tag"
+mvn --batch-mode release:update-versions -DdevelopmentVersion="$new_development_version"
+git commit -am 'Prepare for next development iteration'
+
+echo
+echo "Verify the release tag and the current development version then push the changes by running: git push --follow-tags"
diff --git a/dev/prepare-release.sh b/dev/prepare-release.sh
old mode 100644
new mode 100755
index 2021260..7529695
--- a/dev/prepare-release.sh
+++ b/dev/prepare-release.sh
@@ -20,18 +20,23 @@
set -e
-if [ -z "$2" ]; then
+[[ $# != 2 ]] && err="Incorrect number of arguments: $#"
+[[ -z $err ]] && ! [[ $1 =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] && err="Invalid release version: \"$1\""
+[[ -z $err ]] && ! [[ $2 =~ ^[0-9]+$ ]] && err="Invalid rc number: \"$2\""
+
+if [[ -n $err ]]; then
cat <<EOF
-Usage: $0 <release-version> <new-development-version-without-SNAPSHOT-suffix>
-Example: $0 1.6.0 1.7.0
+$err
+Usage: $0 <release-version> <rc-num>
+Example: $0 2.7.0 0
EOF
exit 1
fi
release_version="$1"
-new_development_version="$2-SNAPSHOT"
+new_development_version="$release_version-SNAPSHOT"
-tag="apache-parquet-format-$release_version"
+tag="apache-parquet-format-$release_version-rc$2"
mvn release:clean
mvn release:prepare -Dtag="$tag" "-DreleaseVersion=$release_version" -DdevelopmentVersion="$new_development_version"
diff --git a/dev/source-release.sh b/dev/source-release.sh
old mode 100644
new mode 100755
index 8d4e281..16e77c7
--- a/dev/source-release.sh
+++ b/dev/source-release.sh
@@ -41,10 +41,10 @@
echo "Preparing source for $tagrc"
-release_hash=`git rev-list $tag 2> /dev/null | head -n 1 `
+release_hash=`git rev-list "$tagrc" 2> /dev/null | head -n 1 `
if [ -z "$release_hash" ]; then
- echo "Cannot continue: unknown git tag: $tag"
+ echo "Cannot continue: unknown git tag: $tagrc"
exit
fi