15858193327 преди 9 месеца
родител
ревизия
1854d39e7c
променени са 2 файла, в които са добавени 183 реда и са изтрити 0 реда
  1. 160 0
      replaceAndStart.sh
  2. 23 0
      run.sh

+ 160 - 0
replaceAndStart.sh

@@ -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

+ 23 - 0
run.sh

@@ -0,0 +1,23 @@
+java  \
+-Xms256M -Xmx256M  \
+-XX:ReservedCodeCacheSize=32m -XX:InitialCodeCacheSize=32m  \
+-XX:+UnlockExperimentalVMOptions -XX:+UseZGC  \
+-XX:ConcGCThreads=1 -XX:ParallelGCThreads=2  \
+-XX:ZCollectionInterval=120 -XX:ZAllocationSpikeTolerance=3  \
+-Xlog:safepoint,classhisto*=trace,age*,gc*=info:file=/opt/bin/java/logs/gc-%t.log:time,tid,tags:filecount=5,filesize=50m  \
+-verbose:gc \
+-XX:+PrintGCDetails \
+-XX:+PrintGCDateStamps \
+-Dsun.rmi.dgc.server.gcInterval=2592000000 \
+-Dsun.rmi.dgc.client.gcInterval=2592000000 \
+-server \
+-Dfile.encoding=UTF-8 \
+-XX:+HeapDumpOnOutOfMemoryError \
+-XX:HeapDumpPath=/opt/bin/java/logs \
+-XX:ErrorFile=/opt/bin/java/logs/hs_err_pid%p.log \
+-Xloggc:/opt/bin/java/logs/gc.log \
+-Xdebug \
+-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n \
+-Dspring.config.additional-location=/opt/bin/java/config/application.properties \
+-jar \
+/opt/bin/java/executable.jar