|
@@ -0,0 +1,160 @@
|
|
|
+#!/bin/bash
|
|
|
+echo "开始运行Demo服务..."
|
|
|
+PARAM=$1;
|
|
|
+echo -e "Commit log: "$PARAM;
|
|
|
+#----------------------- 基本参数配置 start -----------------------
|
|
|
+# JAVA安装目录
|
|
|
+JAVA_PATH="/opt/jdk1.8.0_191/bin/java";
|
|
|
+# 运行环境配置
|
|
|
+JAVA_RUN_ENV="test";
|
|
|
+# drone部署的jar包所在路径
|
|
|
+DRONE_JAR_PATH="/home/drone/data/demoParant";
|
|
|
+# API工程
|
|
|
+APP_API_NAME="apiService-0.0.1-SNAPSHOT.jar"
|
|
|
+APP_API_PATH="/home/demoPatent/apiService"
|
|
|
+APP_API_PING_URL="http://127.0.0.1:18091/api/open/ping"
|
|
|
+APP_API_RUN=
|
|
|
+# 用户端工程
|
|
|
+APP_USER_NAME="userService-0.0.1-SNAPSHOT.jar"
|
|
|
+APP_USER_PATH="/home/demoPatent/userService"
|
|
|
+APP_USER_RUN=
|
|
|
+APP_USER_PING_URL="http://127.0.0.1:18071/user/open/ping"
|
|
|
+# 后台服务工程
|
|
|
+APP_BACK_NAME="backService-0.0.1-SNAPSHOT.jar"
|
|
|
+APP_BACK_PATH="/home/demoPatent/backService"
|
|
|
+APP_BACK_RUN=
|
|
|
+APP_BACK_PING_URL="http://127.0.0.1:18081/back/open/ping"
|
|
|
+
|
|
|
+# 记录是否有启动失败的服务
|
|
|
+APP_START_FAIL=
|
|
|
+APP_START_RESULT=
|
|
|
+#----------------------- 基本参数配置 end -----------------------
|
|
|
+
|
|
|
+echo "程序运行环境:$JAVA_RUN_ENV"
|
|
|
+#----------------------- 定义启动函数 start-----------------------
|
|
|
+startAPP() {
|
|
|
+ APP_NAME=$1;
|
|
|
+ APP_PATH=$2;
|
|
|
+ PING_URL=$3;
|
|
|
+ # echo "APP_NAME:$APP_NAME"
|
|
|
+ # echo "APP_PATH:$APP_PATH"
|
|
|
+ # echo "PING_URL:$APP_NAME"
|
|
|
+ # 部署新jar包到程序运行目录
|
|
|
+ if [ -f "$DRONE_JAR_PATH/$APP_NAME" ];then
|
|
|
+ echo "Move the new jar package to the deployment directory ..."
|
|
|
+ mv -f $DRONE_JAR_PATH/$APP_NAME $APP_PATH/$APP_NAME
|
|
|
+ else
|
|
|
+ echo "The drone original jar file not exist, skip move."
|
|
|
+ fi
|
|
|
+
|
|
|
+ # 获取程序PID
|
|
|
+ getPid() {
|
|
|
+ APP_PID=`ps -ef | grep -v grep | grep $APP_NAME | awk '{print $2}'`
|
|
|
+ }
|
|
|
+ getPid
|
|
|
+
|
|
|
+ # 启动前检查应用是否启动,如果已经启动则先停止再重新启动
|
|
|
+ while [ ${APP_PID} ]
|
|
|
+ do
|
|
|
+ echo -e "App ${APP_NAME} is still RUNNING! PID:$APP_PID";
|
|
|
+ echo "stop ${APP_NAME} ...";
|
|
|
+ kill -9 ${APP_PID};
|
|
|
+ sleep 2;
|
|
|
+ getPid
|
|
|
+ done
|
|
|
+
|
|
|
+ # 运行jar包
|
|
|
+ echo "start ${APP_NAME} ...."
|
|
|
+ cd ${APP_PATH}
|
|
|
+ nohup ${JAVA_PATH} -server -Xms256m -Xmx512m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=768m -Xss256k -jar ./${APP_NAME} --spring.profiles.active=$JAVA_RUN_ENV > /dev/null & 2>&1 &
|
|
|
+
|
|
|
+ # 请求测试接口,判断服务是否正常启动
|
|
|
+ getHttpCode () {
|
|
|
+ http_code=`curl -Is -m 10 -w %{http_code} -o /dev/null $PING_URL`;
|
|
|
+ }
|
|
|
+
|
|
|
+ # 检查服务启动状态
|
|
|
+ sleep 2s;
|
|
|
+ count=0;
|
|
|
+ # 获取接口状态码
|
|
|
+ getHttpCode
|
|
|
+ while [ $http_code -ne 200 ]
|
|
|
+ do
|
|
|
+ if (($count == 8));then
|
|
|
+ echo "${APP_NAME}: $(expr $count \* 5)秒内未启动,请检查!";
|
|
|
+ msg="start ${APP_NAME} failed!\n";
|
|
|
+ echo -e $msg;
|
|
|
+ APP_START_RESULT=$APP_START_RESULT$msg;
|
|
|
+ APP_START_FAIL="YES";
|
|
|
+ return;
|
|
|
+ fi
|
|
|
+ count=$(($count+1));
|
|
|
+ echo "${APP_NAME} waiting to start ...";
|
|
|
+ # sleep 1s;
|
|
|
+ sleep 5s;
|
|
|
+ # 获取接口状态码
|
|
|
+ getHttpCode
|
|
|
+ echo "http_code --> $http_code";
|
|
|
+ done
|
|
|
+
|
|
|
+ getPid
|
|
|
+ msg="start ${APP_NAME} success! PID=$APP_PID\n";
|
|
|
+ echo -e $msg;
|
|
|
+ APP_START_RESULT=$APP_START_RESULT$msg;
|
|
|
+}
|
|
|
+#----------------------- 函数定义结束 end -----------------------
|
|
|
+
|
|
|
+#----------------------- commit log 判断 start-----------------------
|
|
|
+# 根据commit日志参数判断启动哪个工程
|
|
|
+if [[ $PARAM == *'[CI API]'* ]]; then
|
|
|
+ echo -e "Commit参数指定启动API工程...\n";
|
|
|
+ APP_API_RUN="true"
|
|
|
+fi
|
|
|
+
|
|
|
+if [[ $PARAM == *'[CI USER]'* ]]; then
|
|
|
+ echo -e "Commit参数指定启动用户端工程...\n";
|
|
|
+ APP_USER_RUN="true"
|
|
|
+fi
|
|
|
+
|
|
|
+if [[ $PARAM == *'[CI BACK]'* ]]; then
|
|
|
+ echo -e "Commit参数指定启动BACK工程...\n";
|
|
|
+ APP_BACK_RUN="true"
|
|
|
+fi
|
|
|
+
|
|
|
+if [[ -z "$APP_API_RUN" ]] && [[ -z "$APP_USER_RUN" ]] && [[ -z "$APP_BACK_RUN" ]]; then
|
|
|
+ echo -e "Commit未指定参数,准备启动所有工程...\n";
|
|
|
+ APP_API_RUN="true"
|
|
|
+ APP_USER_RUN="true"
|
|
|
+ APP_BACK_RUN="true"
|
|
|
+fi
|
|
|
+#----------------------- commit log 判断结束 -----------------------
|
|
|
+
|
|
|
+# 启动运营端服务
|
|
|
+if [ $APP_API_RUN ]; then
|
|
|
+ echo "Run api service ..."
|
|
|
+ startAPP $APP_API_NAME $APP_API_PATH $APP_API_PING_URL
|
|
|
+fi
|
|
|
+# 启动用户端服务
|
|
|
+if [ $APP_USER_RUN ]; then
|
|
|
+ echo "Run user service"
|
|
|
+ startAPP $APP_USER_NAME $APP_USER_PATH $APP_USER_PING_URL
|
|
|
+fi
|
|
|
+# 启动商家端服务
|
|
|
+if [ $APP_BACK_RUN ]; then
|
|
|
+ echo "Run back service"
|
|
|
+ startAPP $APP_BACK_NAME $APP_BACK_PATH $APP_BACK_PING_URL
|
|
|
+fi
|
|
|
+
|
|
|
+
|
|
|
+# 删除drone构建缓存
|
|
|
+rm -rf $DRONE_JAR_PATH/*.jar
|
|
|
+
|
|
|
+# 打印运行结果
|
|
|
+echo "------------ service start status ------------"
|
|
|
+echo -e $APP_START_RESULT
|
|
|
+echo "----------------------------------------------"
|
|
|
+
|
|
|
+# 如果有启动失败的应用,则退出状态码为1,用于drone标记构建失败
|
|
|
+if [ $APP_START_FAIL ]; then
|
|
|
+ exit 1;
|
|
|
+fi
|