#!/bin/bash #nohup bash check_new_pkgs_dev.sh & #steps below: ##發佈的機器上運行這個腳本 #定時遍歷發佈包存放路徑 #1.遍歷全部要發佈的包 #2.對於每個包,找到這個包的時候,中止相應的服務 #3.將deployed下面相應的已發佈目錄歸檔到history中 #4.將壓縮包解壓到deployed下面相應的項目目錄中 #5.將壓縮包移到history中歸檔 #6.啓動相應服務 ###注意進程只能啓一個,!!!!! ##NOTE 發佈zjzjc-voting的各個環境,單機版,zjdev環境以外的須要修改各dir從zjdev改到相應的環境 ##取腳本名字 PROGNAME=`basename $0` pacBaseNameArr=(zjzc-web-flow zjzc-web-api zjzc-pay zjzc-web-frontEnd zjzc-web-backoffice zjzc-voting-front zjzc-voting zjzc-wze-proxy zjzc-hy-core zjzc-hy-pre zjzc-hy-admin-pre zjzc-backoffice-sso-server zjzc-hy-front zjzc-hy-web-admin zjzc-message-proxy) serviceNameArr=(tomcat8081 tomcat8082 tomcat8083 no no no tomcat8080 tomcat8084 tomcat8085 tomcat8086 tomcat8087 tomcat8088 no no tomcat8089) tomcatPathKeyword=(8081 8082 8083 no no no 8080 8084 8085 8086 8087 8088 no no 8089) ##歷史發佈目錄 UPLOAD_DIR=/t/deploy/zjdev/deployableApps ##應用部署的目錄 DEPLOYED_DIR=/t/deploy/zjdev/deployedApps ##歷史應用目錄 HISTORY_FOLDER=/t/deploy/zjdev/deployableApps/history/folder ##歷史的war包 HISTORY_WAR=/t/deploy/zjdev/deployableApps/history/war if [ -d "$UPLOAD_DIR" ] then : else mkdir -p $UPLOAD_DIR fi if [ -d "$DEPLOYED_DIR" ] then : else mkdir -p $DEPLOYED_DIR fi if [ -d "$HISTORY_FOLDER" ] then : else mkdir -p $HISTORY_FOLDER fi if [ -d "$HISTORY_WAR" ] then : else mkdir -p $HISTORY_WAR fi ##pacBaseNameArr=(zjzc-web-flow zjzc-web-api zjzc-pay zjzc-web-frontEnd zjzc-web-backoffice zjzc-voting-front zjzc-voting zjzc-wze-proxy zjzc-hy-core zjzc-hy-pre zjzc-hy-admin-pre zjzc-backoffice-sso-server zjzc-hy-front zjzc-hy-web-admin zjzc-message-proxy) ##pacBaseNameArr 數組長度 appArrLen=${#pacBaseNameArr[*]} while true do DATETIME=`date +%Y''%m''%d'-'%H''%M''%S` ### check if there is new war at UPLOAD_DIR ### #ls -l $UPLOAD_DIR/${APPNAME}*.war >/dev/null 2>&1 #if [ $? -eq "0" ] #then for((i=0;i<"$appArrLen";i=i+1)) do ##UPLOAD_DIR=/t/deploy/zjdev/deployableApps UPLOAD_DIR_WAR_COUNT=`ls -l $UPLOAD_DIR | grep -E "${pacBaseNameArr[$i]}.*.(rar|zip|war)$" | wc -l` if [ $UPLOAD_DIR_WAR_COUNT -ne "1" ] then echo "$DATETIME ${pacBaseNameArr[$i]} has too many pkgs or no pkg, please check it, now continue! " >>/var/log/${PROGNAME}.out continue fi ###no need to restart service for static web ### ##serviceNameArr=(tomcat8081 tomcat8082 tomcat8083 no no no tomcat8080 tomcat8084 tomcat8085 tomcat8086 tomcat8087 tomcat8088 no no tomcat8089) ##靜態資源不重啓,tomcat重啓 if [ ${serviceNameArr[$i]} != "no" ] then ###stop service service ${serviceNameArr[$i]} stop ##每一個應用的進程 procIds=`ps -ef | grep -E java.*${tomcatPathKeyword[$i]} | awk '{printf $2 " "}'` procNums=`echo $procIds | wc -w` if [ $procNums -gt "1" ] then echo "service with keyword: ${tomcatPathKeyword[i]} still has process ids: $procIds survived, kill them after 10 seconds" sleep 10 kill $procIds fi echo "service ${serviceNameArr[$i]} stopped" fi echo "echo UPLOAD_DIR_WAR_COUNT:$UPLOAD_DIR_WAR_COUNT at $DATETIME for ${pacBaseNameArr[$i]}"; ### move current tomcat to HISTORY_FOLDER ##DEPLOYED_DIR=/t/deploy/zjdev/deployedApps ##移動當前應用目錄 到歷史目錄下HISTORY_FOLDER=/t/deploy/zjdev/deployableApps/history/folder ##HISTORY_FOLDER=/t/deploy/zjdev/deployableApps/history/folder mv $DEPLOYED_DIR/${pacBaseNameArr[$i]} $HISTORY_FOLDER/${pacBaseNameArr[$i]}_$DATETIME ##UPLOAD_DIR=/t/deploy/zjdev/deployableApps ##取應用的名字zjzc-web-api-1.1.17.war_20160708-151024 NEW_WAR_NAME=`ls -l $UPLOAD_DIR/${pacBaseNameArr[$i]}*.* | awk -F"/" '{ print $NF }'` ### unzip new war ##應用目錄,判斷backoffice,後面添加/backoffice subfolder="${pacBaseNameArr[$i]}"; if [ ${pacBaseNameArr[$i]} == "zjzc-web-backoffice" ] then subfolder="$subfolder/backoffice" fi ##DEPLOYED_DIR=/t/deploy/zjdev/deployedApps mkdir -p $DEPLOYED_DIR/$subfolder ##把打包好的包,解壓到對應目錄 unzip -o $UPLOAD_DIR/$NEW_WAR_NAME -d $DEPLOYED_DIR/$subfolder ### mov new war to HISTORY_WAR ##UPLOAD_DIR=/t/deploy/zjdev/deployableApps ##把打包好的包移走到/t/deploy/zjdev/deployableApps/history/war ##HISTORY_WAR=/t/deploy/zjdev/deployableApps/history/war mv $UPLOAD_DIR/$NEW_WAR_NAME $HISTORY_WAR/${NEW_WAR_NAME}_$DATETIME ###no need to restart service for static web if [ ${serviceNameArr[$i]} != "no" ] then ###start service service ${serviceNameArr[$i]} start echo "service started" fi done #fi sleep 10 done