shell脚本自动发布jar、vue程序参考

  • Post author:
  • Post category:vue


一、shell脚本,自动发布jar

1、先创建一个fb.sh脚本文件。

2、将jar放入发版目录下,执行脚本后会自动扫描该目录下的所有jar

3、选择你要发版的项目

#! /bin/bash
 
# 脚本第一次创建后需要执行的操作
# sudo chmod 777 fb.sh && sed 's/\r//' -i fb.sh
 
# 定义相关变量
time="`date +%Y-%m-%d-%H%M`"
backupsTime=""
javaPath=/opt/jdk1.8.0_371/bin/java
fbPath=/root/fb/
projectPath=/opt/sale_marketing/
jarName=""
logName=""
files=()
count=0
length=0

menu(){
	echo -e "************************************MENU************************************\n"
	cd $fbPath
	for i in `ls *.jar`;do
         files[${count}]=${i}
	     ((count++))
	done
	length=${#files[@]}
	for((i=0;i<length;i++));do
		echo "************* $i ${files[i]}  *************"
	done
}
 
chooes(){
	read -p "请输入您需要发版的项目: " number
	isInt $number $length
	jarName=${files[number]}
	arr=(${jarName//-/ })
	logName=${arr[1]}".log"
}
 
isExist(){
	if [ ! -f $fbPath$jarName ]; then
		echo "----------- "$fbPath$jarName" 文件不存在,已退出 ----------"
		exit 0
	fi
}
 
killProcess(){
	echo "----------------- 杀死进程 start -----------------"
	# 查询项目对应的pid
	webPid=$(ps -ef|grep $jarName |grep -v grep | awk '{print $2}')
	# 当"$webPid"非空的时候,为true
	if [  -n  "$webPid"  ];then
		kill  -9  $webPid
		echo "----------------- 杀死进程 end -----------------"
	else
		echo "没有找到该项目的进程-----------------"
	fi
}
 
delete(){
  echo "-----------------  删除上次备份 start -----------------"
  rm   $projectPath$jarName.bak*
  echo "-------------------  删除上次备份 end -----------------"
}
 
backups(){
  echo "-----------------  备份 start -----------------"
  backupsTime=$(ls --full-time $projectPath$jarName  | awk '{print $6,$7}' | sed s/://g  | sed s/[[:space:]]/-/g)
  backupsTime=${backupsTime: 0 :17}
  echo "-----------------  上次项目时间 ${backupsTime} -----------------"
  cp   $projectPath$jarName  $projectPath$jarName.bak-${backupsTime}
  echo "-------------------  备份 end -----------------"
}

copy(){
	echo "----------------- 复制项目 start -----------------"
	cp $fbPath$jarName  $projectPath
	echo "----------------- 复制项目 end -----------------"
}
 
deploy(){
	echo "----------------- 部署jar start -----------------"
	nohup $javaPath -jar $projectPath$jarName>>$projectPath$logName &
	echo "----------------- 部署jar end -----------------"
}
 
seeLog(){
	echo "----------------- 查看日志 -----------------"
	tail -f  $projectPath$logName
}

# 校验输入的参数是否为整数  获取第一个参数 $1
isInt(){
	expr $1 "+" 10 &> /dev/null
	if [ $? -eq 0 ];then
	    if [ $1 -lt 0 ] || [ $1 -ge $2 ]; then
			echo  ""$1"不在下标范围内,正在退出系统"
			exit 0
		fi
    else
	  echo ""$1" not number,正在退出系统"
	  exit 0
	fi
}


menu
chooes
isExist
echo "----------------- "$time"开始发版"$jarName"-----------------"
killProcess
delete
backups
copy
deploy
seeLog



注:

1、脚本是在Windows下写的,Windows和Linux的换行符号不同,所以在Linux中执行脚本的时候报错。 需要执行

 sed 's/\r//' -i fb.sh

2、脚本授权

 sudo chmod 777 fb.sh

3、脚本执行之后,可以通过查看进程,验证程序是否运行成功

ps -ef|grep sale-gate-1.0-SNAPSHOT.jar

二、shell脚本,自动发布vue前端

#! /bin/bash
 
# 脚本第一次创建后需要执行的操作
# sudo chmod 777 fb-web.sh && sed 's/\r//' -i fb-web.sh
 
# 定义相关变量
time="`date +%Y-%m-%d-%H%M`"
backupsTime=""
fbPath=/root/fb/
projectPath=/opt/sale_marketing/webs/
zipName=dist.zip
webName=""
 
menu(){
	echo -e "************************************MENU************************************\n"
	echo "************* 0 marketing  *************"
	echo "************* 1 znyx_marketing *************"
}
 
chooes(){
	read -p "请输入您需要发版的项目: " number
	case $number in
		0)  webName="marketing"
		;;
		1)  webName="znyx_marketing"
		;;
		*)  echo '您的输入有误,已退出'
			exit 0
		;;
	esac
}
 
isExist(){
	if [ ! -f $fbPath$zipName ]; then
		echo "----------- "$fbPath$zipName" 文件不存在,已退出 ----------"
		exit 0
	fi
}



delete(){
  echo "-----------------  删除上次项目 start -----------------"
  cd   $projectPath
  rm  $zipName.bak*
  rm  -rf $webName*
  echo "-------------------  删除上次项目 end -----------------"
}
 
backups(){
	echo "-----------------  备份 start -----------------"
	backupsTime=$(ls --full-time $zipName  | awk '{print $6,$7}' | sed s/://g  | sed s/[[:space:]]/-/g)
	backupsTime=${backupsTime: 0 :17}
	echo "-----------------  上次项目时间 ${backupsTime} -----------------"
	cp   $zipName  $zipName.bak-$backupsTime
	echo "-----------------  备份 end -----------------"
}

deploy(){
	echo "----------------- 部署web start -----------------"
	cp    $fbPath$zipName  ./
	unzip $zipName -d $webName
	echo "----------------- 部署web end -----------------"
}

menu
chooes
isExist
delete
backups
deploy