Linux部署指定(Git或SVN)版本的spring cloud项目自动打包启动脚本

场景:

linux中部署spring cloud项目时,没有必要使用持续构建时,需要简单的脚本实现自动的打包和部署。

脚本:

1、start-service.sh是java命令启动项目脚本,基础运行脚本。

#!/bin/bash
# jar包目录
SERVER_PATH=/home/xxx
# jar包名称
RESOURCE_NAME=com-proj-${1}-0.0.1-SNAPSHOT.jar
echo start $RESOURCE_NAME service!
# 杀死进程
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`  
if [ ${tpid} ]; then  
echo 'Stop Process...'  
kill -15 $tpid  
fi  
sleep 5  
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`  
if [ ${tpid} ]; then  
echo 'Kill Process!'  
kill -9 $tpid  
else  
echo 'Stop Success!'  
fi  
# 检测是否还在运行
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`  
if [ ${tpid} ]; then  
    echo 'App is running.'  
else  
    echo 'App is NOT running.'  
fi  
# 运行jar包,需要自定义参数的在case中自定义
rm -f tpid
cd ${SERVER_PATH}
case ${1} in
    'zuul')  nohup java -server -Xms512m -Xmx768m -jar ./$RESOURCE_NAME --spring.profiles.active=test >/dev/null 2>&1 &
    ;;
    'eureka')  nohup java -server -Xms512m -Xmx768m -jar ./$RESOURCE_NAME --spring.profiles.active=test >/dev/null 2>&1 &
    ;;
    *)  nohup java -jar ./$RESOURCE_NAME --spring.profiles.active=test >/dev/null 2>&1 &
    ;;
esac
echo Start Success!

2、package-run.sh是Git或SVN指定版本运行更新maven打包的脚本。

#!/bin/sh
# 源代码位置,并且已经拉过一次代码
CODE_PATH=/home/xxx/code/proj
# jar包运行目录
SERVER_PATH=/home/xxx/api
# 获取版本
version=
while getopts ":v:" opt
do
    case $opt in
        v)
        version=$OPTARG
        ;;
        ?)
        echo "未知参数"
        ;;
    esac
done
# 根据版本拉取代码(这里是SVN版本,如果是Git请自行替换)
cd ${CODE_PATH}
if [ ! $version ]; then
  echo "开始拉取最新代码"
  svn update
else
  shift 2
  echo "开始拉取代码版本:$version "
  svn up -r $version
fi
# 拼接包名称
packages=''
for i in $(seq 1 $#)
do
    eval j=\$$i
    packages=${packages}com-proj-$j,
done
# 编译打包
echo "开始编译${packages}"
mvn clean package -DskipTests -pl ${packages} -am
# 复制运行程序
cd ~
for i in $(seq 1 $#)
do
    eval j=\$$i
    echo "复制文件 com-proj-$j-0.0.1-SNAPSHOT.jar"
    # 如果文件夹不存在,创建文件夹
    if [ ! -d "${SERVER_PATH}/com-proj-$j" ]; then
      mkdir ${SERVER_PATH}/com-com-proj-$j
    fi
    \cp -rf ${CODE_PATH}/com-proj-$j/target/com-proj-$j-0.0.1-SNAPSHOT.jar ${SERVER_PATH}/com-proj-$j-0.0.1-SNAPSHOT.jar
    # 调用上一个脚本启动项目
    ./start-service.sh $j
done

3、start-all.sh是一个扩展脚本,为了不更新打包而重启多个项目的脚本。

cd ~
for i in $(seq 1 $#)
do
    eval j=\$$i
    ./start-service.sh $j
done

使用:

确保三个脚本在同一目录下,配合使用,以zuul,eureka为例

# 仅仅重启一个项目,不需要更新Git和重新打包
./start-service.sh zuul
# 需要重启多个项目,不需要更新Git和重新打包
./start-all.sh zuul eureka
# 需要更新Git和重新打包,不指定版本
./package-run.sh zuul eureka
# 需要更新Git和重新打包,指定版本(Git,SVN版本)
./package-run.sh -v 2022 zuul eureka

此脚本请根据需要修改后使用,不可直接用于生产环境。其中的命令参数和目录名根据需要修改,例如kill -9等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值