From 358445bdb167d8c86fe8d83d1aa29082453ecfa0 Mon Sep 17 00:00:00 2001 From: huanghaiquan Date: Tue, 24 Dec 2019 01:52:17 +0800 Subject: [PATCH] Fixed a bug of the build scripts: don't terminate the build when error occurs. --- build/build.sh | 21 +++++++++++++++++++++ build/env.sh | 9 ++++++++- build/pack.sh | 33 ++++++++++++++++++++++++++------- build/test.sh | 16 ++++++++++++++++ build/update.sh | 24 ++++++++++++++++-------- 5 files changed, 87 insertions(+), 16 deletions(-) diff --git a/build/build.sh b/build/build.sh index 63527549..0b2f4f2d 100755 --- a/build/build.sh +++ b/build/build.sh @@ -1,4 +1,7 @@ +#定义子脚本的错误返回命令 +RTN="return" + #调用当前脚本目录下 env.sh 脚本,设置环境变量,处理当前传入参数; source `dirname $0`/env.sh "$*" @@ -12,7 +15,25 @@ then else #执行测试; source $TEST_SHELL + + #检查执行结果是否正常 + ERR=$? + if [ $ERR != 0 ] + then + echo "构建过程中发生了集成测试错误[$ERR]!!终止构建!!" + exit $ERR + fi + #结束集成测试错误检查; fi + #执行打包构建; source $PACK_SHELL + +#检查执行结果是否正常 +ERR=$? +if [ $ERR != 0 ] +then + echo "构建过程中发生了打包错误[$ERR]!!终止构建!!" + exit $ERR +fi \ No newline at end of file diff --git a/build/env.sh b/build/env.sh index 7e70072b..1a39e1ee 100755 --- a/build/env.sh +++ b/build/env.sh @@ -1,10 +1,17 @@ +#定义默认的子脚本错误退出命令; +if [ ! $RTN ] +then + #当以 source 命令调用子脚本时,只能用 return 命令终止子脚本的执行; + #当直接在 shell 中调用脚本或者 fork 等其它命令执行子脚本时,用 exit 命令终止脚本执行; + RTN="exit" +fi if [ $ENV_SHELL ] then #如果已经设置过环境变量,则不再重复执行; echo "略过初始化环境变量。。。" - return + ${RTN} fi echo "---------------- 初始化环境变量 ----------------" diff --git a/build/pack.sh b/build/pack.sh index a7d9c432..835c4252 100755 --- a/build/pack.sh +++ b/build/pack.sh @@ -9,7 +9,16 @@ fi # 更新代码库; source $UPDATE_SHELL -echo "--------------- 开始编译打包产品 ---------------" +#检查执行结果是否正常 +ERR=$? +if [ $ERR != 0 ] +then + echo "更新代码库时发生了错误[$ERR]!!终止打包!!" + ${RTN} $ERR +fi + + +echo "--------------- 开始编译打包 ---------------" cd $DEPLOY_DIR echo "当前目录:`pwd`" @@ -20,13 +29,23 @@ then SKIP_TESTS=0 fi +CMD="mvn clean package" + if [ $SKIP_TESTS == 1 ] then - echo "执行命令:mvn clean package -DskipTests=true" - mvn clean package -DskipTests=true -else - echo "执行命令:mvn clean package" - mvn clean package + echo "编译参数:-DskipTests=true" + CMD="$CMD -DskipTests=true" +fi + +echo "执行命令:$CMD" +${CMD} + +#检查执行结果是否正常 +ERR=$? +if [ $ERR != 0 ] +then + echo "编译打包过程中发生了错误[$ERR]!!终止打包!!" + ${RTN} $ERR fi -echo "--------------- 完成编译打包产品 ---------------" +echo "--------------- 完成编译打包 ---------------" diff --git a/build/test.sh b/build/test.sh index 81c56246..d9c08725 100755 --- a/build/test.sh +++ b/build/test.sh @@ -9,6 +9,14 @@ fi # 更新代码库; source $UPDATE_SHELL +#检查执行结果是否正常 +ERR=$? +if [ $ERR != 0 ] +then + echo "更新代码库时发生了错误[$ERR]!!终止测试!!" + ${RTN} $ERR +fi + echo "---------------- 开始集成测试 ----------------" @@ -18,4 +26,12 @@ echo "当前目录:`pwd`" echo "执行命令:mvn clean package" mvn clean package +#检查执行结果是否正常 +ERR=$? +if [ $ERR != 0 ] +then + echo "集成测试过程中发生了错误[$ERR]!!终止测试!!" + ${RTN} $ERR +fi + echo "---------------- 完成集成测试 ----------------" \ No newline at end of file diff --git a/build/update.sh b/build/update.sh index 1eeb4b98..61adb30f 100755 --- a/build/update.sh +++ b/build/update.sh @@ -14,14 +14,22 @@ fi if [ $SUBMODULES_UPDATED == 1 ] then echo "代码库已经最新,略过更新操作。。。" -else + ${RTN} +fi - echo "---------------- 更新代码库 ----------------" - cd $BASE_DIR - git submodule update --init --recursive +echo "---------------- 更新代码库 ----------------" +cd $BASE_DIR +git submodule update --init --recursive + +#检查执行结果是否正常 +ERR=$? +if [ $ERR != 0 ] +then + echo "更新代码库时发生了错误!!返回错误码:$ERR" + ${RTN} $ERR +fi - #标记代码已经更新; - SUBMODULES_UPDATED=1 +#标记代码已经更新; +SUBMODULES_UPDATED=1 - echo "---------------- 完成代码库更新 ----------------" -fi \ No newline at end of file +echo "---------------- 完成代码库更新 ----------------"