v1

  1. #!/bin/bash
  2. #项目名(文件夹名称需与jar名称保持一致)
  3. project_name=$1
  4. #指令(start,deploy ...)
  5. cmd=$2
  6. #启动环境(pro,dev,test ...)
  7. server_mode=$3
  8. #端口号
  9. server_port=$4
  10. base_dir=/home/workspace/projects
  11. project_dir=${base_dir}/${project_name}
  12. function deploy(){
  13. #更新代码
  14. (cd ${project_dir} && git checkout master && git pull && echo ">>>>>> git pull successful!") || exit 1
  15. #backup
  16. if [ ! -d "$base_dir/backup" ];then
  17. cd ${base_dir} && mkdir backup && echo ">>>>>> mkdir" ${base_dir}/backup
  18. fi
  19. cd ${project_dir} && cp -r ${project_dir} ${base_dir}/backup/${project_name}.bak.`date "+%F-%H%M%S"` && echo ">>>>>> backup cp project to ${base_dir}/backup/${project_name}.bak.`date "+%F-%H%M%S"` successful!"|| exit 1
  20. #build
  21. (cd ${project_dir} && gradle bootJar && echo ">>>>>> build successful!") || exit 1
  22. stop && start
  23. }
  24. function status(){
  25. if [ ! -z "`ps -ef|grep ${project_name}.jar|grep -v grep |awk '{print $2}'`" ];then
  26. echo ">>>>>> ${project_name}.jar is running! pid:"`ps -ef|grep ${project_name}.jar|grep -v grep |awk '{print $2}'`""
  27. return 1
  28. else
  29. echo ">>>>>> server was not running"
  30. return 0
  31. fi
  32. }
  33. function stop(){
  34. status
  35. if [ $? -eq "1" ]; then
  36. #kill server
  37. ps -ef|grep ${project_name}.jar|grep -v grep |awk '{print $2}'|xargs kill -9 ;sleep 2
  38. echo ">>>>>> kill ${project_name}.jar successful!"
  39. fi
  40. }
  41. function start(){
  42. status
  43. if [ $? -eq "1" ]; then
  44. echo ">>>>>> The current service is started" && exit 1
  45. fi
  46. # 创建log目录
  47. if [ ! -d "/tmp/logs/$project_name" ];then
  48. (mkdir -p /tmp/logs/${project_name} && echo ">>>>>> mkdir /tmp/logs/${project_name} successful!") || exit 1
  49. fi
  50. cd ${project_dir} || exit 1
  51. echo ">>>>>> cd ${project_dir}" && echo ">>>>>> now start server"
  52. if [ ! -f "build/libs/${project_name}.jar" ];then
  53. echo ">>>>>> No executable jar will be compiled"
  54. (cd ${project_dir} && /Users/jiumeng/.gradle/gradle-4.5.1/bin/gradle bootJar && echo ">>>>>> build successful!") || exit 1
  55. fi
  56. echo ">>>>>> execute startup command: nohup java -server -Xmx2g -Xms2g -Xmn2g -Xss526k -jar build/libs/${project_name}.jar ${server_mode} ${server_port} > /dev/null 2>&1 &"
  57. nohup java -server -Xmx2g -Xms2g -Xmn2g -Xss526k -jar build/libs/${project_name}.jar ${server_mode} ${server_port} > /dev/null 2>&1 &
  58. #sleep 6s后再去检测进程(因为程序启动后可能报错停止运行)
  59. echo ">>>>>> checking startup results..."
  60. sleep 6
  61. if [ ! -z "`ps -ef|grep ${project_name}.jar|grep -v grep |awk '{print $2}'`" ];then
  62. echo ">>>>>> ${project_name}.jar start successful! pid:$! deploy finished."
  63. else
  64. echo ">>>>>> ${project_name}.jar was not running ,deploy failed!"
  65. fi
  66. }
  67. # 1.校验参数
  68. if [ $# -lt 2 ];then
  69. echo ">>>>>> args check failed: should be two args, running like this: $0 server-message start" && exit 1
  70. fi
  71. # 2.设置启动环境及制定端口号
  72. if [ -z "$server_mode" ]; then
  73. server_mode=""
  74. else
  75. server_mode="--spring.profiles.active=$server_mode"
  76. fi
  77. if [ -z "$server_port" ]; then
  78. server_port=""
  79. else
  80. server_port="--server.port=$server_port"
  81. fi
  82. # 3.执行指定命令
  83. if [ ${cmd} == "deploy" ];then
  84. deploy
  85. elif [ ${cmd} == "status" ];then
  86. status
  87. elif [ ${cmd} == "stop" ];then
  88. stop
  89. elif [ ${cmd} == "start" ];then
  90. start
  91. elif [ ${cmd} == "restart" ];then
  92. stop
  93. start
  94. else
  95. echo ">>>>>> args check failed: should be two args, running like this: $0 server-message start" && exit 1
  96. fi

ndsp线上服务部署脚本

  1. #!/bin/bash
  2. if [ $1 != "frontend" -a $1 != "backend" ];then
  3. echo "args check failed: \$1 must be frontend or backend" && exit 1
  4. fi
  5. if [ $# -ne 2 ];then
  6. echo "args check failed: should be two args, running like this: $0 backend v1.0.1" && exit 1
  7. fi
  8. project_name=$1
  9. tag_name=$2
  10. prepare_dir=/var/www/build-workspace
  11. config_dir=$prepare_dir/conf-store
  12. project_clean_dir=$prepare_dir/ndsp-management-clean
  13. function deploy_ndsp_mgmt_frontend(){
  14. (cd $project_clean_dir && git checkout master && git pull && git checkout $tag_name && echo git checout $tag_name successful! )|| (echo "git checkout failed" && exit 1)
  15. if [ -d "/var/www/ndsp-mgmt-frontend-$tag_name" ];then
  16. mv /var/www/ndsp-mgmt-frontend-$tag_name /var/www/ndsp-mgmt-frontend-$tag_name.bak.`date "+%F-%H%M%S"`
  17. fi
  18. cd $project_clean_dir && cp -r ndsp-management-frontend /var/www/ndsp-mgmt-frontend-$tag_name|| exit 1
  19. cd /var/www && cp -r $config_dir/mgmt-frontend/config.js /var/www/ndsp-mgmt-frontend-$tag_name/src/ || exit 1
  20. (cd /var/www/ndsp-mgmt-frontend-$tag_name/ && /opt/node-v8.11.2-linux-x64/bin/npm install && /opt/node-v8.11.2-linux-x64/bin/npm run build ) || (echo npm build failed && exit 1)
  21. cd /var/www && echo entering /var/www make soft link!
  22. if [ -L ndsp-mgmt-frontend ];then
  23. unlink ndsp-mgmt-frontend
  24. fi
  25. ln -s ndsp-mgmt-frontend-$tag_name ndsp-mgmt-frontend && echo make soft link done! build finished!
  26. }
  27. function deploy_ndsp_mgmt_backend(){
  28. (cd $project_clean_dir && git checkout master && git pull && git checkout $tag_name && echo git checout $tag_name successful!) || (echo git checkout failed && exit 1)
  29. if [ -d "/var/www/ndsp-mgmt-backend-$tag_name" ];then
  30. mv /var/www/ndsp-mgmt-backend-$tag_name /var/www/ndsp-mgmt-backend-${tag_name}.bak.`date "+%F-%H%M%S"`
  31. fi
  32. pwd
  33. cd $project_clean_dir && cp -r ndsp-management-backend /var/www/ndsp-mgmt-backend-$tag_name && echo cp to /vaw/www successful!|| exit 1
  34. cd /var/www && cp -r $config_dir/mgmt-backend/application-test.yml /var/www/ndsp-mgmt-backend-$tag_name/src/main/resources/ || exit 1
  35. cd /var/www && cp -r $config_dir/mgmt-backend/logback-spring.xml /var/www/ndsp-mgmt-backend-$tag_name/src/main/resources/ || exit 1
  36. (cd /var/www/ndsp-mgmt-backend-$tag_name/ && /opt/gradle/gradle-4.8/bin/gradle bootRepackage ) || (echo gradle build failed && exit 1)
  37. cd /var/www && echo entering /var/www make soft link!
  38. if [ -L ndsp-mgmt-backend ];then
  39. unlink ndsp-mgmt-backend
  40. fi
  41. ln -s ndsp-mgmt-backend-$tag_name ndsp-mgmt-backend && echo make soft link done!,buidl finished!
  42. cd /var/www/ndsp-mgmt-backend && echo now restart ndsp.jar ||(echo "softlink not exist!" && exit 1)
  43. ps -ef|grep ndsp.jar|grep -v grep |awk '{print $2}'|xargs kill -9 ;sleep 2
  44. nohup java -server -Xmx1536m -Xms1536m -Xmn1536m -Xss526k -jar build/libs/ndsp.jar --spring.profiles.active=test --server.port=8104 > /dev/null 2>&1 &
  45. if [ ! -z "`ps -ef|grep ndsp.jar|grep -v grep |awk '{print $2}'`" ];then
  46. echo ndsp.jar restart successful! deploy finished.
  47. else
  48. echo ndsp.jar was not running ,deploy failed! && exit 1
  49. fi
  50. }
  51. if [ $project_name == "frontend" ];then
  52. deploy_ndsp_mgmt_frontend
  53. elif [ $project_name == "backend" ];then
  54. deploy_ndsp_mgmt_backend
  55. fi

v2

1. env.sh

  1. #!/bin/bash
  2. #项目名(文件夹名称需与jar名称保持一致)
  3. project_name=$1
  4. #指令(start,deploy ...)
  5. cmd=$2
  6. #启动环境(pro,dev,test ...)
  7. server_mode=$3
  8. #端口号
  9. server_port=$4
  10. branch=test
  11. base_dir=/home/workspace/projects
  12. project_dir=${base_dir}/${project_name}
  13. # 3.执行指定命令
  14. if [[ ${project_name} == "ndsp-management" ]];then
  15. project_name="ndsp"
  16. if [[ ${cmd} == "build" ]];then
  17. project_dir="/home/workspace/projects/ndsp-management/ndsp-management-frontend"
  18. else
  19. project_dir="/home/workspace/projects/ndsp-management/ndsp-management-backend"
  20. fi
  21. fi
  22. # 4.使用默认环境
  23. if [[ ${server_mode} == "" ]];then
  24. server_mode="test"
  25. fi
  26. echo project_name=${project_name} cmd=${cmd} server_mode=${server_mode} server_port=${server_port} branch=${branch}

2. deploy.sh

  1. #!/bin/bash
  2. . `dirname $0`/env.sh
  3. function deploy(){
  4. #更新代码
  5. (cd ${project_dir} && git checkout ${branch} && git pull && echo ">>>>>> git pull successful!") || exit 1
  6. #backup
  7. # if [ ! -d "$base_dir/backup" ];then
  8. # cd ${base_dir} && mkdir backup && echo ">>>>>> mkdir" ${base_dir}/backup
  9. # fi
  10. # cd ${project_dir} && cp -r ${project_dir} ${base_dir}/backup/${project_name}.bak.`date "+%F-%H%M%S"` && echo ">>>>>> backup cp project to ${base_dir}/backup/${project_name}.bak.`date "+%F-%H%M%S"` successful!"|| exit 1
  11. #build
  12. (cd ${project_dir} && gradle buildJar && echo ">>>>>> build successful!") || exit 1
  13. stop && start
  14. }
  15. function status(){
  16. if [ ! -z "`ps -ef|grep ${project_name}.jar|grep -v grep |awk '{print $2}'`" ];then
  17. echo ">>>>>> ${project_name}.jar is running! pid:"`ps -ef|grep ${project_name}.jar|grep -v grep |awk '{print $2}'`""
  18. return 1
  19. else
  20. echo ">>>>>> server was not running"
  21. return 0
  22. fi
  23. }
  24. function stop(){
  25. status
  26. if [ $? -eq "1" ]; then
  27. #kill server
  28. ps -ef|grep ${project_name}.jar|grep -v grep |awk '{print $2}'|xargs kill -9 ;sleep 2
  29. echo ">>>>>> kill ${project_name}.jar successful!"
  30. fi
  31. }
  32. function start(){
  33. status
  34. if [ $? -eq "1" ]; then
  35. echo ">>>>>> The current service is started" && exit 1
  36. fi
  37. # 创建log目录
  38. if [ ! -d "/tmp/logs/$project_name" ];then
  39. (mkdir -p /tmp/logs/${project_name} && echo ">>>>>> mkdir /tmp/logs/${project_name} successful!") || exit 1
  40. fi
  41. cd ${project_dir} || exit 1
  42. echo ">>>>>> cd ${project_dir}" && echo ">>>>>> now start server"
  43. if [ ! -f "build/libs/${project_name}.jar" ];then
  44. echo ">>>>>> No executable jar will be compiled"
  45. (cd ${project_dir} && gradle buildJar --status && echo ">>>>>> build successful!") || exit 1
  46. fi
  47. echo ">>>>>> execute startup command: nohup java -jar build/libs/${project_name}.jar ${server_mode} ${server_port} > /dev/null 2>&1 &"
  48. #proxychains4
  49. nohup java -jar build/libs/${project_name}.jar ${server_mode} ${server_port} > /dev/null 2>&1 &
  50. #sleep 6s后再去检测进程(因为程序启动后可能报错停止运行)
  51. echo ">>>>>> checking startup results..."
  52. sleep 6
  53. if [ ! -z "`ps -ef|grep ${project_name}.jar|grep -v grep |awk '{print $2}'`" ];then
  54. echo ">>>>>> ${project_name}.jar start successful! pid:$! deploy finished."
  55. else
  56. echo ">>>>>> ${project_name}.jar was not running ,deploy failed!"
  57. fi
  58. }
  59. function build() {
  60. #更新代码
  61. (cd ${project_dir} && git checkout ${branch} && git pull && echo ">>>>>> git pull successful!") || exit 1
  62. #build
  63. (cd ${project_dir} && cnpm install && cnpm run build:test && echo ">>>>>> build successful!" && rm -rf bak && mv index bak && mv dist index)|| { rm -rf dist && mv bak index && echo "build error, go back to the previous version" && exit 1; }
  64. }
  65. # 1.校验参数
  66. if [ $# -lt 2 ];then
  67. echo ">>>>>> args check failed: should be two args, running like this: $0 server-message start" && exit 1
  68. fi
  69. # 2.设置启动环境及制定端口号
  70. if [ -z "$server_mode" ]; then
  71. server_mode=""
  72. else
  73. server_mode="--spring.profiles.active=$server_mode"
  74. fi
  75. if [ -z "$server_port" ]; then
  76. server_port=""
  77. else
  78. server_port="--server.port=$server_port"
  79. fi
  80. # 3.执行指定命令
  81. if [ ${cmd} == "deploy" ];then
  82. deploy
  83. elif [ ${cmd} == "status" ];then
  84. status
  85. elif [ ${cmd} == "stop" ];then
  86. stop
  87. elif [ ${cmd} == "start" ];then
  88. start
  89. elif [ ${cmd} == "restart" ];then
  90. stop
  91. start
  92. elif [ ${cmd} == "build" ];then
  93. build
  94. else
  95. echo ">>>>>> args check failed: should be two args, running like this: $0 server-message start" && exit 1
  96. fi