DRILL-1236: Create script to verify release artifacts

Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/2d10e8b8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/2d10e8b8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/2d10e8b8

Branch: refs/heads/master
Commit: 2d10e8b8feaf48429d7fa7324b15ba9949f41378
Parents: 28fbdad
Author: Aditya Kishore <adi...@maprtech.com>
Authored: Thu Jul 31 15:24:14 2014 -0700
Committer: Jacques Nadeau <jacq...@apache.org>
Committed: Wed Aug 6 16:44:22 2014 -0700

----------------------------------------------------------------------
 tools/verify_release.sh | 103 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 103 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2d10e8b8/tools/verify_release.sh
----------------------------------------------------------------------
diff --git a/tools/verify_release.sh b/tools/verify_release.sh
new file mode 100644
index 0000000..eb50a31
--- /dev/null
+++ b/tools/verify_release.sh
@@ -0,0 +1,103 @@
+#!/usr/bin/env bash
+#
+#/**
+# * Copyright 2014 The Apache Software Foundation
+# *
+# * 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.
+# */
+#
+
+DRILL_CHECKUM_ALOGRITHMS="sha1 md5"
+DRILL_SIGNATURE_EXTENSION=asc
+DRILL_ARTIFACT_EXTENSION=tar.gz
+DRILL_ARTIFACTS=*.${DRILL_ARTIFACT_EXTENSION}
+DRILL_ARTIFACT_DIR=.
+
+ERROR='\e[0;31m'
+SUCCESS='\e[0;32m'
+DEBUG='\e[1;30m'
+INFO='\e[0;33m'
+RESET='\e[0m'
+
+#
+# Helper methods
+#
+error_exit() { echo -e $ERROR$@$RESET;  popd &> /dev/null; exit 1; }
+info_msg  () { echo -e $INFO$@$RESET; }
+debug_msg () { echo -e $DEBUG$@$RESET; }
+
+#
+# Check the command line argument
+#
+case $# in
+  0) ;;
+  1)
+    if ! [ -d $1 ] ; then
+      pushd . &> /dev/null
+      error_exit "'$1' is not a directory."
+    fi
+    DRILL_ARTIFACT_DIR=$1
+  ;;
+  *)
+    echo "Usage: $0 <path_to_drill_artifacts>"
+    exit 1
+esac
+
+#
+# Begin validation
+#
+ARTIFACT_COUNT=0
+pushd $DRILL_ARTIFACT_DIR &> /dev/null
+shopt -s nullglob
+for ARTIFACT in ${DRILL_ARTIFACTS} ; do
+  MSG="Verifying artifact \"$ARTIFACT\"."
+  info_msg ${MSG}
+  info_msg $(eval printf "=%.0s" {1..${#MSG}})
+
+  debug_msg Verifying signature...
+  SIGNATURE_FILE=${ARTIFACT}.${DRILL_SIGNATURE_EXTENSION}
+  if  ! [ -f ${SIGNATURE_FILE} ] ; then error_exit "Signature file 
'${SIGNATURE_FILE}' was not found"; fi
+  if gpg --verify ${SIGNATURE_FILE} ; then
+    debug_msg "Signature verified (${SIGNATURE_FILE})."
+  else
+    error_exit "Signature verification failed for '${ARTIFACT}'!"
+  fi
+  echo
+
+  debug_msg Verifying checksums...
+  for ALGO in $DRILL_CHECKUM_ALOGRITHMS ; do
+    CHECKSUM_FILE=${ARTIFACT}.${ALGO}
+    if  ! [ -f ${CHECKSUM_FILE} ] ; then error_exit "Checksum file 
'${CHECKSUM_FILE}' was not found"; fi
+    COMPUTED_SUM=`${ALGO}sum ${ARTIFACT} | awk '{print $1}'`
+    FILE_SUM=`cat ${CHECKSUM_FILE}`
+    if [ "${FILE_SUM}" == "${COMPUTED_SUM}" ] ; then
+      debug_msg "Verified ${ALGO} checksum (${CHECKSUM_FILE})."
+    else
+      error_exit "Computed ${ALGO} checksum did not match the one in 
'${CHECKSUM_FILE}'"
+    fi
+  done
+  debug_msg "Checksums verified.\n"
+  ARTIFACT_COUNT=$(($ARTIFACT_COUNT+1))
+done
+
+# All GOOD
+if [ "$ARTIFACT_COUNT" == "0" ] ; then
+  error_exit "No artifact found in '$DRILL_ARTIFACT_DIR'"
+else
+  echo -e $SUCCESS"All verifications passed on ${ARTIFACT_COUNT} 
artifacts."$RESET
+fi
+popd &> /dev/null
\ No newline at end of file

Reply via email to