This is an automated email from the ASF dual-hosted git repository. jermy pushed a commit to branch validate-release-improve in repository https://gitbox.apache.org/repos/asf/incubator-hugegraph-doc.git
commit f8c3e37d208d75f2a10e6d8b18eb25f54116f0be Author: Jermy Li <[email protected]> AuthorDate: Sun Feb 25 18:44:32 2024 +0800 Update validate-release.sh --- dist/validate-release.sh | 163 ++++++++++++++++++++++++----------------------- 1 file changed, 84 insertions(+), 79 deletions(-) diff --git a/dist/validate-release.sh b/dist/validate-release.sh index 2181058c..bb473856 100755 --- a/dist/validate-release.sh +++ b/dist/validate-release.sh @@ -21,38 +21,44 @@ # 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/" +set -e + # release version (input by committer) -RELEASE_VERSION=$1 -JAVA_VERSION=$2 +RELEASE_VERSION=$1 # like 1.2.0 +JAVA_VERSION=$2 # like 8 USER=$3 + +# this path is just valid in release-ing progress +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"} +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 +71,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,8 +95,8 @@ 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 + tar -xzvf "$i" + pushd "$(basename "$i" .tar.gz)" echo "Start to check the package content: $(basename "$i" .tar.gz)" # 4.2: check the directory include "NOTICE" and "LICENSE" file and "DISCLAIMER" file @@ -147,68 +153,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 +223,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,8 +238,8 @@ 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" + pushd "$(basename "$i" .tar.gz)" ls -lh echo "Start to check the package content: $(basename "$i" .tar.gz)" @@ -268,57 +274,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!"
