分布式项目git更新代码、打包、传输、自动启动

分布式项目打包、传输、自动启动

背景

单位目前使用springcloud框架,有十多个项目并且每个项目有多个结点,每次测试环境、线上环境部署的时候都得本地打包传输到线上,这样会很浪费时间。所以个人写了套脚本直接在线上更新代码、项目打包、scp传输jar包、自动启动项目。

准备工作

  1. 我的管理代码工具为git,首先我们需要在linux下安装git,在项目中定义自己的线上分支 如:pro分支,创建文件夹执行git clone命令将代码克隆下来。
  2. 安装maven并且配置环境变量

 开始脚本

  • 更新代码

编辑脚本

vim git.sh

 脚本内容

printf "==========================================进入项目==========================================\n"
cd /home/mipmci/git/sxmpx
printf "==========================================正在更新==========================================\n"
git pull
printf "==========================================更新成功==========================================\n"
  •  打包

编辑脚本

vim mvn.sh

 脚本内容

printf "==========================================进入项目目录==========================================\n"
cd /home/mipmci/git/sxmpx
printf "==========================================开始打包servic项目==========================================\n"
mvn clean package -DskipTests
printf "==========================================servic项目打包成功==========================================\n"
cd /home/mipmci/git/sxmpx/sxmpx-admin
printf "==========================================开始打包admin项目==========================================\n"
mvn clean package -DskipTests
printf "==========================================admin项目打包成功==========================================\n"

 

  • 单个项目实现方法

编辑脚本

vim up_service_user.sh

脚本内容

#删除将要启动的jar
rm -rf /home/mipmci/java/sxmpx-service-user-0.0.1-SNAPSHOT.jar

#通过scp将打包好的jar包拷贝到当前服务器的指定路径
expect -c "
spawn scp -r root@192.168.0.159:/home/mipmci/git/sxmpx/service/sxmpx-service-user/target/sxmpx-service-user-0.0.1-SNAPSHOT.jar /home/mipmci/java
expect {
    \"*assword\"
                {
                    set timeout 300;
                    send \"Mip@mcI7031305\r\";
                }
    \"yes/no\"
                {
                    send \"yes\r\"; exp_continue;}
                }
expect eof"


#查找服务ID并且杀死服务
ps -ef|grep sxmpx-service-user-0.0.1-SNAPSHOT.jar | grep -v grep |awk '{print $2}' | xargs kill -9
#启动服务
java -jar /home/mipmci/java/sxmpx-service-user-0.0.1-SNAPSHOT.jar &

 其他项目启动以此类推

  • 最后我们可以将这些多个不同的单个项目启动脚本结合起来

编辑脚本

vim up_service_all.sh

脚本内容

#user项目启动脚本
start_user_service ()
{
    sh /home/mipmci/java/up_start/up_service_user.sh
}

#git更新项目脚本
start_git ()
{
    sh /home/mipmci/java/up_start/git.sh
}
#mvn打包脚本
start_mvn ()
{
    sh /home/mipmci/java/up_start/mvn.sh
}


read -p "是否需要更新项目 ?(Y/N) >>>: " git
case $git in
  Y)
  start_git;;
esac


read -p "是否需要重新打包项目 (Y/N) >>>: " mvn
case $mvn in
  Y)
  start_mvn;;
esac



#请输入想要启动的项目名称
read -p "Please input your product started >>>: " product

echo $product

#判断输入的项目名称并且调起启动脚本
case $product in
  user)
        start_user_service ;;

  pay)
        start_pay_service ;;


  *)
        echo "-----------------------------------未找到您要启动的项目----------------------------------";;
esac
  • 使用案例

说明已经打包成功

输入启动项目的名称即可

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值