deploy.sh 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. #!/bin/bash
  2. #time=`date +%Y-%m-%d.%H-%M`
  3. #set -x
  4. set -e
  5. gitUrl=ssh://www@122.9.140.63:3022/bot_yxt/yxt_lmis.git
  6. dirPath=~/deploy/yxt_lmis
  7. serverName=yxt_lmis
  8. logPath=~/logs/yxt_lmis_nohup.log
  9. echoPrefix="\033[36m+"
  10. echoSuffix="\033[0m"
  11. #-------------------------------------------------------------------
  12. JAVA_MEM_OPTS=" -DappName=${serverName} -server -Xmx2g -Xms2g"
  13. DATABASE_OPTS=" -Ddatabase.codeset=ISO-8859-1 -Ddatabase.logging=false"
  14. JAVA_OPTS_EXT=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dapplication.codeset=UTF-8 -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai"
  15. #-------------------------------------------------------------------
  16. isChange="1" # 仓库是否发生变化,0未:变化;非0:变化
  17. pullCode() {
  18. # Usage: pullCode "codePath" "gitUrl" "branch" "position"
  19. path=$1 # 代码保存路径
  20. gitUrl=$2 # git仓库地址
  21. branch=${3:-"master"} # git分支
  22. position=${4:-""} # 使用“.”clone到当前文件夹
  23. isChange="1"
  24. # 创建文件夹
  25. if [ ! -d "$path" ]; then
  26. echo -e "$echoPrefix mkdir -p $path $echoSuffix"
  27. mkdir -p $path
  28. fi
  29. # git clone
  30. echo -e "$echoPrefix cd $path $echoSuffix"
  31. cd $path
  32. if [ "`ls -A $path`" == "" ] || [ ! -d "$path/$position" ] || [ "`ls -A $path/$position`" = "" ]; then
  33. echo -e "$echoPrefix git clone $gitUrl $position $echoSuffix"
  34. git clone $gitUrl $position
  35. isChange="2"
  36. fi
  37. # 进入文件夹,切换分支,git pull
  38. if [ "$position" != "" ]; then
  39. echo -e "$echoPrefix cd $position $echoSuffix"
  40. cd $position
  41. fi
  42. echo -e "$echoPrefix git checkout $branch $echoSuffix"
  43. git checkout $branch
  44. echo -e "$echoPrefix git pull $echoSuffix"
  45. if [ "`git pull`" == "Already up-to-date." ] && [ $isChange == 1 ]; then
  46. isChange="0"
  47. fi
  48. echo ""
  49. }
  50. startServer() {
  51. pid=$1
  52. if [ -z $pid ];then
  53. echo -e "$echoPrefix cd $dirPath $echoSuffix"
  54. cd $dirPath
  55. echo -e "$echoPrefix java $JAVA_MEM_OPTS $DATABASE_OPTS $JAVA_OPTS_EXT -jar ./ent-0.0.0-SNAPSHOT.jar --spring.profiles.active=global,hwy --server.port=8082 >$logPath 2>&1 & $echoSuffix"
  56. java $JAVA_MEM_OPTS $DATABASE_OPTS $JAVA_OPTS_EXT -jar ./ent-0.0.0-SNAPSHOT.jar --spring.profiles.active=global,hwy --server.port=8082 >$logPath 2>&1 &
  57. echo "$serverName 启动成功!"
  58. else
  59. echo "$serverName 正在运行..."
  60. fi
  61. echo "查看日志: tail -F $logPath -n 100"
  62. }
  63. stopServer() {
  64. pid=$1
  65. if [ -z $pid ];then
  66. echo "$serverName 未运行"
  67. else
  68. echo -e "$echoPrefix ps -ef | grep "DappName=${serverName}" | grep -v 'grep' | awk '{print \$2}' | xargs kill $echoSuffix"
  69. ps -ef | grep "DappName=${serverName}" | grep -v 'grep' | awk '{print $2}' | xargs kill
  70. echo "$serverName 已停止!"
  71. fi
  72. }
  73. deployPull() {
  74. pid=$1
  75. if [ -z $pid ];then
  76. pullCode $dirPath $gitUrl "master" "."
  77. else
  78. echo "$serverName 正在运行,必须先stop,再pull"
  79. fi
  80. }
  81. deployServer() {
  82. pid=$1
  83. if [ ! -z $pid ];then
  84. stopServer $pid
  85. sleep 3s
  86. fi
  87. deployPull
  88. startServer
  89. }
  90. logs() {
  91. tail -F $logPath -n 100
  92. }
  93. pid=`ps -ef | grep "DappName=${serverName}" | grep -v 'grep' | awk '{print $2}'`
  94. # 操作参数: pull deploy start stop kill log logs
  95. if [ "$1" == "pull" ];then
  96. deployPull $pid
  97. elif [ "$1" == "deploy" ];then
  98. deployServer $pid
  99. elif [ "$1" == "start" ];then
  100. startServer $pid
  101. elif [ "$1" == "stop" ] || [ "$1" == "kill" ];then
  102. stopServer $pid
  103. elif [ "$1" == "log" ] || [ "$1" == "logs" ];then
  104. logs
  105. else
  106. if [ -z $pid ];then
  107. echo "$serverName 未运行 | 输入操作参数: pull deploy start stop kill log logs"
  108. else
  109. echo "输入操作参数: pull deploy start stop kill log logs"
  110. echo "pid=$pid | $serverName 正在运行... | 查看日志: tail -F $logPath -n 100"
  111. fi
  112. fi