电脑上按Ctrl + D,下次访问更方便
服务分类

shell脚本实现Spring boot项目在Linux服务器上自动打包并重新运行

用shell脚本实现在Linux服务器上自动拉取Spring boot的git源码,杀掉原有的进程,自动打包成jar,备份原有的jar,然后启动项目。

对于不太大的Spring boot项目,或者服务器性能有限,可以不用Jenkins这类工具,用个shell脚本就可以基本实现自动打包、停掉原来的进程、备份旧的jar,然后自动启动jar

首先需要在Linux服务器上安装JDK、Maven和git客户端,这是前提条件。

下面是shell代码,你可以根据实际情况按注释的提示修改

#!/usr/bin/env bash
# 项目名称
CODE_DIR="project"
# 打包后的jar名称前缀
PACKAGED_NAME_ADMIN="app-1.0.0"
# jar存放位置
APP_DEPLOY_PATH="/www/java"
# JAVA_HOME="/usr/java/jdk1.8.0_161"
# spring boot用哪个环境运行
PROFILE="produce"
# PORT=39005

#如果任何语句的执行结果不是true则应该退出
set -e

#git初始化配置,配置后,无需手动输入用户名及密码即可从指定git管理代码
function gitinit(){
  echo "start gitinit..."
  cd ~/
  touch .git-credentials
  # 这里的git地址和账号请修改
  echo "https://yourname@www.fuwu360.com:password@gitee.com/fuwu360/project.git" > .git-credentials
  git config --global credential.helper store
  #执行此句后~/.gitconfig文件多了一项[credential] helper = store
  echo "finish gitinit..."

}
function clone(){
  echo "start pull git resource code..."
  rm -rf ./$CODE_DIR
  # 请自行修改这里的git地址为你的项目地址
  git clone  gitee.com/fuwu360/project.git
  cd ./$CODE_DIR
  echo "git checkout succeed ..."
}

#pull and package gitcodeResource 
function package(){
  echo "start package..."
  cd ./$CODE_DIR
  git pull
  mvn clean package -Dmaven.test.skip=true
  echo "packaging app success ..."
}

#code deploy
function deploy(){
  cd $APP_DEPLOY_PATH
  # 如果备份目录back不存在则创建
  if [ ! -d backup  ];then
  mkdir backup
  else
    echo "dir backup exist"
  fi
  echo "重命名旧版本并备份..."
  if [ -f $PACKAGED_NAME_ADMIN.jar ]
    then
      mv $PACKAGED_NAME_ADMIN.jar ./backup/$PACKAGED_NAME_ADMIN'_'`date +%Y%m%d%H%M%S`.jar
  fi
  echo "复制新的jar..."
  cp $APP_DEPLOY_PATH/$CODE_DIR/target/$PACKAGED_NAME_ADMIN.jar $APP_DEPLOY_PATH
}

# 停止进程
function shutdown(){
  PID=$(ps -ef | grep $PACKAGED_NAME_ADMIN.jar | grep -v grep | awk '{ print $2 }')
  if [ -z "$PID" ]
  then
    echo jar is already stopped
  else
    echo kill $PID
    kill -9 $PID
  fi
}

# app startup
function startup(){
  echo "startuping"
  shutdown
  package
  deploy
  # export JAVA_HOME=$JAVA_HOME
  # app_log.txt是日志名字,请自行修改
  nohup java -jar $PACKAGED_NAME_ADMIN.jar --spring.profiles.active=$PROFILE >app_log.txt 2>&1 &
  echo "startuping success ..."
 # echo "打开端口:"$PORT"..."
 # firewall-cmd --zone=public --add-port=$PORT/tcp --permanent

}

#pring helpinfo
function help(){
    echo "Usage: ./run_app.sh [gitinit|clone|package|deploy|startup|shutdown|help]"
    echo "gitinit:初始化git设置"
    echo "package:程序打包"
    echo "deploy:程序发布"
    echo "startup:程序启动"
    echo "shutdown:程序关闭"
    echo "help:打印帮助信息"
}

case "$1" in
  'gitinit')
    gitinit
    ;;
  'clone')
    clone
    ;;
  'package')
    package
    ;;
  'deploy')
    deploy
    ;;
  'startup')
    startup
    ;;
  'shutdown')
    shutdown
    ;;
  'help')
    help
    ;;
  *)


esac
exit 0

发表回复

登录后才能评论
联系我们

联系我们

微信专属客服:

fuwu360微信客服

工作时间:周一至周五,9:30-18:30,节假日休息

返回顶部