This is an automated email from the ASF dual-hosted git repository.

jin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hugegraph-doc.git


The following commit(s) were added to refs/heads/master by this push:
     new e2e0ffb7 chore(dist): improve validate-release.sh (#329)
e2e0ffb7 is described below

commit e2e0ffb74767dac3239b8ce7b1fdf6177f3222fc
Author: Jermy Li <[email protected]>
AuthorDate: Mon Mar 11 10:04:31 2024 +0800

    chore(dist): improve validate-release.sh (#329)
    
    
    
    ---------
    
    Co-authored-by: imbajin <[email protected]>
---
 dist/validate-release.sh | 172 +++++++++++++++++++++++++----------------------
 1 file changed, 90 insertions(+), 82 deletions(-)

diff --git a/dist/validate-release.sh b/dist/validate-release.sh
index 2181058c..e7c9a66e 100755
--- a/dist/validate-release.sh
+++ b/dist/validate-release.sh
@@ -21,38 +21,45 @@
 # 3. Compile the source package & run server & toolchain
 # 4. Run server & toolchain in binary package
 
-URL_PREFIX="https://dist.apache.org/repos/dist/dev/incubator/hugegraph/";
+# if we don't want to exit after '|', remove "-o pipefail"
+set -euxo pipefail
+
 # release version (input by committer)
-RELEASE_VERSION=$1
-JAVA_VERSION=$2
+RELEASE_VERSION=$1 # like 1.2.0
+JAVA_VERSION=$2 # like 11
 USER=$3
+
+# this URL is only valid during the release process
+SVN_URL_PREFIX="https://dist.apache.org/repos/dist/dev/incubator/hugegraph";
+
 # git release branch (check it carefully)
 #GIT_BRANCH="release-${RELEASE_VERSION}"
 
-RELEASE_VERSION=${RELEASE_VERSION:?"Please input the release version behind 
script"}
+RELEASE_VERSION=${RELEASE_VERSION:?"Please input the release version, like 
1.2.0"}
+USER=${USER:-"imbajin"}
 WORK_DIR=$(
-  cd "$(dirname "$0")" || exit
+  cd "$(dirname "$0")"
   pwd
 )
 
-cd "${WORK_DIR}" || exit
+cd "${WORK_DIR}"
 echo "Current work dir: $(pwd)"
 
 ################################
 # Step 1: Download SVN Sources #
 ################################
-rm -rf "$WORK_DIR"/dist/"$RELEASE_VERSION"
-svn co ${URL_PREFIX}/"$RELEASE_VERSION" "$WORK_DIR"/dist/"$RELEASE_VERSION"
+rm -rf "${WORK_DIR}/dist/${RELEASE_VERSION}"
+mkdir -p "${WORK_DIR}/dist/${RELEASE_VERSION}"
+cd "${WORK_DIR}/dist/${RELEASE_VERSION}"
+svn co "${SVN_URL_PREFIX}/${RELEASE_VERSION}" .
 
 ##################################################
 # Step 2: Check Environment & Import Public Keys #
 ##################################################
-cd "$WORK_DIR"/dist/"$RELEASE_VERSION" || exit
+shasum --version 1>/dev/null
+gpg --version 1>/dev/null
 
-shasum --version 1>/dev/null || exit
-gpg --version 1>/dev/null || exit
-
-wget https://downloads.apache.org/incubator/hugegraph/KEYS || exit
+wget https://downloads.apache.org/incubator/hugegraph/KEYS
 echo "Import KEYS:" && gpg --import KEYS
 # TODO: how to trust all public keys in gpg list, currently only trust the 
first one
 echo -e "5\ny\n" | gpg --batch --command-fd 0 --edit-key $USER trust
@@ -65,18 +72,18 @@ done
 ########################################
 # Step 3: Check SHA512 & GPG Signature #
 ########################################
-cd "$WORK_DIR"/dist/"$RELEASE_VERSION" || exit
+cd "${WORK_DIR}/dist/${RELEASE_VERSION}"
 
 for i in *.tar.gz; do
   echo "$i"
-  shasum -a 512 --check "$i".sha512 || exit
-  eval gpg "${GPG_OPT}" --verify "$i".asc "$i" || exit
+  shasum -a 512 --check "$i".sha512
+  eval gpg "${GPG_OPT}" --verify "$i".asc "$i"
 done
 
 ####################################
 # Step 4: Validate Source Packages #
 ####################################
-cd "$WORK_DIR"/dist/"$RELEASE_VERSION" || exit
+cd "${WORK_DIR}/dist/${RELEASE_VERSION}"
 
 CATEGORY_X="\bGPL|\bLGPL|Sleepycat License|BSD-4-Clause|\bBCL\b|JSR-275|Amazon 
Software License|\bRSAL\b|\bQPL\b|\bSSPL|\bCPOL|\bNPL1|Creative Commons 
Non-Commercial"
 CATEGORY_B="\bCDDL1|\bCPL|\bEPL|\bIPL|\bMPL|\bSPL|OSL-3.0|UnRAR License|Erlang 
Public License|\bOFL\b|Ubuntu Font License Version 1.0|IPA Font License 
Agreement v1.0|EPL2.0|CC-BY"
@@ -89,9 +96,10 @@ for i in *src.tar.gz; do
     echo "The package name $i should include incubating" && exit 1
   fi
 
-  tar xzvf "$i" || exit
-  pushd "$(basename "$i" .tar.gz)" || exit
-  echo "Start to check the package content: $(basename "$i" .tar.gz)"
+  tar -xzvf "$i"
+  MODULE_DIR=$(basename "$i" .tar.gz)
+  pushd ${MODULE_DIR}
+  echo "Start to check the package content: ${MODULE_DIR}"
 
   # 4.2: check the directory include "NOTICE" and "LICENSE" file and 
"DISCLAIMER" file
   if [[ ! -f "LICENSE" ]]; then
@@ -147,68 +155,68 @@ for i in *src.tar.gz; do
   # 4.8: test compile the packages
   if [[ $JAVA_VERSION == 8 && "$i" =~ "computer" ]]; then
     echo "skip computer module in java8"
-    popd || exit
+    popd
     continue
   fi
   # TODO: consider using commands that are entirely consistent with building 
binary packages
-  mvn package -DskipTests -Papache-release -ntp -e || exit
+  mvn package -DskipTests -Papache-release -ntp -e
   ls -lh
 
-  popd || exit
+  popd
 done
 
 ###########################################
-# Step 5: Run Compiled Packages In Server #
+# Step 5: Run Compiled Packages of Server #
 ###########################################
-cd "$WORK_DIR"/dist/"$RELEASE_VERSION" || exit
+cd "${WORK_DIR}/dist/${RELEASE_VERSION}"
 
 ls -lh
-pushd 
./*hugegraph-incubating*src/hugegraph-server/*hugegraph*"${RELEASE_VERSION}" || 
exit
-bin/init-store.sh || exit
+pushd 
./*hugegraph-incubating*src/hugegraph-server/*hugegraph*"${RELEASE_VERSION}"
+bin/init-store.sh
 sleep 3
-bin/start-hugegraph.sh || exit
-popd || exit
+bin/start-hugegraph.sh
+popd
 
 #######################################################################
-# Step 6: Run Compiled Packages In ToolChain (Loader & Tool & Hubble) #
+# Step 6: Run Compiled Packages of ToolChain (Loader & Tool & Hubble) #
 #######################################################################
-cd "$WORK_DIR"/dist/"$RELEASE_VERSION" || exit
+cd "${WORK_DIR}/dist/${RELEASE_VERSION}"
 
-pushd ./*toolchain*src || exit
+pushd ./*toolchain*src
 ls -lh
-pushd ./*toolchain*"${RELEASE_VERSION}" || exit
+pushd ./*toolchain*"${RELEASE_VERSION}"
 ls -lh
 
 # 6.1: load some data first
 echo "test loader"
-pushd ./*loader*"${RELEASE_VERSION}" || exit
+pushd ./*loader*"${RELEASE_VERSION}"
 bin/hugegraph-loader.sh -f ./example/file/struct.json -s 
./example/file/schema.groovy \
-  -g hugegraph || exit
-popd || exit
+  -g hugegraph
+popd
 
 # 6.2: try some gremlin query & api in tool
 echo "test tool"
-pushd ./*tool*"${RELEASE_VERSION}" || exit
-bin/hugegraph gremlin-execute --script 'g.V().count()' || exit
-bin/hugegraph task-list || exit
-bin/hugegraph backup -t all --directory ./backup-test || exit
-popd || exit
+pushd ./*tool*"${RELEASE_VERSION}"
+bin/hugegraph gremlin-execute --script 'g.V().count()'
+bin/hugegraph task-list
+bin/hugegraph backup -t all --directory ./backup-test
+popd
 
 # 6.3: start hubble and connect to server
 echo "test hubble"
-pushd ./*hubble*"${RELEASE_VERSION}" || exit
+pushd ./*hubble*"${RELEASE_VERSION}"
 # TODO: add hubble doc & test it
 cat conf/hugegraph-hubble.properties
-bin/start-hubble.sh || exit
-bin/stop-hubble.sh || exit
-popd || exit
+bin/start-hubble.sh
+bin/stop-hubble.sh
+popd
 
-popd || exit
-popd || exit
+popd
+popd
 # stop server
-pushd 
./*hugegraph-incubating*src/hugegraph-server/*hugegraph*"${RELEASE_VERSION}" || 
exit
-bin/stop-hugegraph.sh || exit
-popd || exit
+pushd 
./*hugegraph-incubating*src/hugegraph-server/*hugegraph*"${RELEASE_VERSION}"
+bin/stop-hugegraph.sh
+popd
 
 # clear source packages
 #rm -rf ./*src*
@@ -217,7 +225,7 @@ popd || exit
 ####################################
 # Step 7: Validate Binary Packages #
 ####################################
-cd "$WORK_DIR"/dist/"$RELEASE_VERSION" || exit
+cd "${WORK_DIR}/dist/${RELEASE_VERSION}"
 
 for i in *.tar.gz; do
   if [[ "$i" == *-src.tar.gz ]]; then
@@ -232,10 +240,11 @@ for i in *.tar.gz; do
     echo "The package name $i should include incubating" && exit 1
   fi
 
-  tar xzvf "$i" || exit
-  pushd "$(basename "$i" .tar.gz)" || exit
+  tar -xzvf "$i"
+  MODULE_DIR=$(basename "$i" .tar.gz)
+  pushd ${MODULE_DIR}
   ls -lh
-  echo "Start to check the package content: $(basename "$i" .tar.gz)"
+  echo "Start to check the package content: ${MODULE_DIR}"
 
   # 7.2: check root dir include "NOTICE"/"LICENSE"/"DISCLAIMER" files & 
"licenses" dir
   if [[ ! -f "LICENSE" ]]; then
@@ -268,57 +277,56 @@ for i in *.tar.gz; do
     echo "The package $i shouldn't include empty file: $EMPTY_FILE is empty" 
&& exit 1
   done
 
-  popd || exit
+  popd
 done
 
 # TODO: skip the following steps by comparing the artifacts built from source 
packages with binary packages
 #########################################
-# Step 8: Run Binary Packages In Server #
+# Step 8: Run Binary Packages of Server #
 #########################################
-cd "$WORK_DIR"/dist/"$RELEASE_VERSION" || exit
+cd "${WORK_DIR}/dist/${RELEASE_VERSION}"
 
-pushd ./*hugegraph-incubating*"${RELEASE_VERSION}" || exit
-bin/init-store.sh || exit
-sleep 30
-bin/start-hugegraph.sh || exit
-popd || exit
+pushd ./*hugegraph-incubating*"${RELEASE_VERSION}"
+bin/init-store.sh
+sleep 3
+bin/start-hugegraph.sh
+popd
 
 #####################################################################
-# Step 9: Run Binary Packages In ToolChain (Loader & Tool & Hubble) #
+# Step 9: Run Binary Packages of ToolChain (Loader & Tool & Hubble) #
 #####################################################################
-cd "$WORK_DIR"/dist/"$RELEASE_VERSION" || exit
+cd "${WORK_DIR}/dist/${RELEASE_VERSION}"
 
-pushd ./*toolchain*"${RELEASE_VERSION}" || exit
+pushd ./*toolchain*"${RELEASE_VERSION}"
 ls -lh
 
 # 9.1: load some data first
 echo "test loader"
-pushd ./*loader*"${RELEASE_VERSION}" || exit
-bin/hugegraph-loader.sh -f ./example/file/struct.json -s 
./example/file/schema.groovy \
-  -g hugegraph || exit
-popd || exit
+pushd ./*loader*"${RELEASE_VERSION}"
+bin/hugegraph-loader.sh -f ./example/file/struct.json -s 
./example/file/schema.groovy -g hugegraph
+popd
 
 # 9.2: try some gremlin query & api in tool
 echo "test tool"
-pushd ./*tool*"${RELEASE_VERSION}" || exit
-bin/hugegraph gremlin-execute --script 'g.V().count()' || exit
-bin/hugegraph task-list || exit
-bin/hugegraph backup -t all --directory ./backup-test || exit
-popd || exit
+pushd ./*tool*"${RELEASE_VERSION}"
+bin/hugegraph gremlin-execute --script 'g.V().count()'
+bin/hugegraph task-list
+bin/hugegraph backup -t all --directory ./backup-test
+popd
 
 # 9.3: start hubble and connect to server
 echo "test hubble"
-pushd ./*hubble*"${RELEASE_VERSION}" || exit
+pushd ./*hubble*"${RELEASE_VERSION}"
 # TODO: add hubble doc & test it
 cat conf/hugegraph-hubble.properties
-bin/start-hubble.sh || exit
-bin/stop-hubble.sh || exit
-popd || exit
+bin/start-hubble.sh
+bin/stop-hubble.sh
+popd
 
-popd || exit
+popd
 # stop server
-pushd ./*hugegraph-incubating*"${RELEASE_VERSION}" || exit
-bin/stop-hugegraph.sh || exit
-popd || exit
+pushd ./*hugegraph-incubating*"${RELEASE_VERSION}"
+bin/stop-hugegraph.sh
+popd
 
 echo "Finish validate, please check all steps manually again!"

Reply via email to