我是靠谱客的博主 健康大炮,最近开发中收集的这篇文章主要介绍[经验] springboot通用发布启动脚本,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

日常开发中,经常会打包发布项目到服务器,每次都重新写一次会非常浪费时间,故写了一个通用的打包发布及启动脚本。

操作环境

  • Centos 7
  • git
  • java 8
  • maven3

打包发布脚本

publish.sh

#!/bin/bash
# 当前时间
date=`date "+%Y%m%d%H%M%S"`
# 项目地址
git_addr="http://git/repository/java/project.git"
# 项目根目录
master_dir="project"
slave_dir=""
# 项目名称
shellFullName=$(basename $0)
git_project=$(echo $shellFullName | cut -d . -f1)
# 项目分支
git_branch="dev"
#目标服务器IP
target_ip="打包后传输的目的地"
# 项目源码路径
package_path="/data/git"
# 替换jar包路径
target_jar_File="${package_path}/movie-cloud/${slave_dir}/${git_project}/target/${git_project}.jar"
# 备份jar包路径
backup_jar_File="${target_jar_File}_${date}"
# shell文件名称
shell_name="$0"
# 打包后推送到指定服务器,用户及路径为项目启动所在服务的相关配置
publish(){
	echo "开始远程拷贝-----------------------------------------------------------"
	scp ${target_jar_File}  root@${target_ip}:/root/java/${master_dir}/${git_project}
	echo "开始远程启动-----------------------------------------------------------"
	ssh root@${target_ip} "source /etc/profile && sh /root/java/${master_dir}/${git_project}/stop.sh && echo ${?} && sleep 8;"
	ssh root@${target_ip} "source /etc/profile && sh /root/java/${master_dir}/${git_project}/start.sh && echo ${?};"
	echo "远程启动中"
}

echo "发布时间:" ${date}
echo "git地址:"  ${git_addr}
echo "项目名称"  ${git_project}
echo "git分支:"  ${git_branch}
echo "target_jar_File:" ${target_jar_File}
echo "backup_jar_File:" ${backup_jar_File}

while true
do
	read -r -p "是否重新打包项目? [Y/n] " input

	case $input in
	    [yY][eE][sS]|[yY])
			 echo "开始拉取git--------------------------------------------------------"
			 cd ${package_path} && rm -rf ${master_dir}
			 git clone ${git_addr}
			 cd ${package_path}/${master_dir}
			 echo "开始打包------a-----------------------------------------------------"
			 git checkout ${git_branch}
			 mvn clean install -Dmaven.test.skip=true
			 publish
			 exit 1
			;;
	    [nN][oO]|[nN])
			echo "略过打包直接发布"
			publish
			exit 1	       	
			;;
	    *)
			echo "错误的执行命令请输入[Y/n]..."
			;;
	esac
done

启动脚本

start.sh

#!/bin/sh
PRG="$0"
while [ -h "$PRG" ]; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> (.*)$'`
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done
# Get standard environment variables
PRGDIR=`dirname "$PRG"`
[ -z "$APP_HOME" ] && APP_HOME=`cd "$PRGDIR" >/dev/null; pwd`
[ -z "$APP_PID" ] && APP_PID=$APP_HOME/pid
FILE_LIST=`ls  ${APP_HOME}`
JAR_FILE=""
LOG_FILE=""
for FILE in $FILE_LIST
do
        if [ "${FILE##*.}" = "jar" ]; then
                JAR_FILE="${APP_HOME}/${FILE}"
                LOG_FILE="${FILE%.*}.log"
        fi
done
if [ -z $JAR_FILE ]; then
        echo "Error : no jar file in $APP_HOME"
        exit
fi
if [ -f "$APP_PID" ]; then
        PID=`cat $APP_PID`
  rm -rf $APP_PID
  kill -9 $PID
fi
nohup java $DEBUG -jar -Dspring.profiles.active=dev  -Xmx2024m -Dfile.encoding=UTF-8   ${JAR_FILE} >>$APP_HOME/${LOG_FILE} 2>&1 &
PID=$!
echo $PID > ${APP_PID}
if [ ! -f $APP_HOME/${LOG_FILE} ]; then
        echo "begin....." >>$APP_HOME/${LOG_FILE}
fi


停止脚本

stop.sh

#!/bin/sh
PRG="$0"
while [ -h "$PRG" ]; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> (.*)$'`
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done
# Get standard environment variables
PRGDIR=`dirname "$PRG"`
[ -z "$APP_HOME" ] && APP_HOME=`cd "$PRGDIR" >/dev/null; pwd`
[ -z "$APP_PID" ] && APP_PID=$APP_HOME/pid
if [ ! -f "$APP_PID" ]; then
        echo 'no pid file found.'
else
        PID=`cat $APP_PID`
        echo "kill process $PID"
        rm -rf $APP_PID
        kill -9 $PID
        #kill $PID
fi

总结

以上及项目中会经常使用的项目打包及发布脚本,发布脚本需对项目环境做些微调,启动及停止脚本拷贝到启动目录即可直接使用,无需调整,如果大家有更好的方案及方法欢迎指导,谢谢。

最后

以上就是健康大炮为你收集整理的[经验] springboot通用发布启动脚本的全部内容,希望文章能够帮你解决[经验] springboot通用发布启动脚本所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部