博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6、脚本同步svn代码打包部署
阅读量:6538 次
发布时间:2019-06-24

本文共 2573 字,大约阅读时间需要 8 分钟。

hot3.png

一:背景

系统在线上部署后,每次更新代码,都要手动在本机打包,然后传jar到bin下,最后还要重启程序,步骤繁琐。现在通过一个脚本集中吧这些事情都实现

  • 1、从svn checkout代码过来
  • 2、利用maven打包源码,得到target/xxx.jar
  • 3、mv target/xxx.jar 到 工程安装的bin下
  • 4、重启程序

注意: 前提是一定要安装好maven和node以及npm,并且配置好maven环境,使得mvn 命令可以使用。

二:脚本代码

#!/usr/bin/env bash# 获取关键路径, $0 的结果是autodeploy.sh  ,没有前面的路径!# dirname  获取文件所在的文件夹,也就是上一层。比如/root/abc/text.txt  ==>  /root/abc# basename 获取的是最后这一层名称(文件或者文件夹名称)。 比如/root/abc/text.txt  ==> text.txtcd `dirname $0`BIN_DIR=`pwd`cd ..DEPLOY_DIR=`pwd`do_spring_boot(){    SVN_PATH=https://192.168.0.193/svn/ga/02dashuju/09-ga-base/02code/ga-commons/ga-mass-scaff    CHECKOUT_DIR=/temp/projectsources/`basename $DEPLOY_DIR`    # 创建路径,并同步svn代码    if [ ! -d $CHECKOUT_DIR ]; then        mkdir -p $CHECKOUT_DIR    fi    svn checkout $SVN_PATH $CHECKOUT_DIR    # 调用工程中sbin下的package.sh脚本进行打包    sh $CHECKOUT_DIR/sbin/package.sh    # 循环检测target,直到上面脚本打包成功,然后退出    while true; do        echo "正在检测打包结果......"        if [ -e $CHECKOUT_DIR/target/*.jar ]; then            break        fi        sleep 3    done    # 删除本工程bin下的bootstrap.jar,并cp上面打包的jar过来    echo "copy jar 到工程部署对应目录下......"    rm -rf $BIN_DIR/bootstrap.jar    cp $CHECKOUT_DIR/target/*.jar $BIN_DIR/bootstrap.jar    # 重启本工程    echo "正在重启工程......"    $BIN_DIR/service/scaff restart}do_vue(){    SVN_PATH=https://192.168.0.193/svn/ga/02dashuju/09-ga-base/02code/ga-commons/ga-mass-scaff-web    CHECKOUT_DIR=/temp/projectsources/`basename $DEPLOY_DIR`-web    # 创建路径,并同步svn代码    if [ ! -d $CHECKOUT_DIR ]; then        mkdir -p $CHECKOUT_DIR    fi    svn checkout $SVN_PATH $CHECKOUT_DIR    # 调用工程中sbin下的package.sh脚本进行打包    cd $CHECKOUT_DIR    npm install    npm run build    # 循环检测target,直到上面脚本打包成功,然后退出    while true; do        echo "正在检测打包结果......"        if [ -e $CHECKOUT_DIR/dist ]; then            break        fi        sleep 3    done    # 删除本工程bin下的bootstrap.jar,并cp上面打包的jar过来    echo "copy dist 到工程conf/webapps下......"    rm -rf $DEPLOY_DIR/config/webapps/*    cp -r $CHECKOUT_DIR/dist/* $DEPLOY_DIR/config/webapps/}# 使用操作说明print_usage (){  echo "Usage: sh bin/autodeploy.sh COMMAND"  echo "where COMMAND is one of the follows:"  echo "  -> 1(只更新后端工程)|2(只更新前端vue工程)|3(前后端都更新)"  exit 1}if  [ "$1" = "1" ];then    do_spring_bootelif  [ "$1" = "2" ];then    do_vue    echo "正在重启工程......"    $BIN_DIR/service/scaff restartelif  [ "$1" = "3" ];then    do_vue    do_spring_bootelse    print_usagefi

3、总结

  • 1、svn命令 需要先保存密码,然后通过svn checkout 可以从SVN拉去项目,如果项目已经存在了,则只会更新修改的代码
  • 2、maven一定要弄好本地仓库。npm也是一样的道理
  • 3、vue 工程先打包,放到webapps下,如果后端的maven工程不需要打包,则直接重启程序即可

转载于:https://my.oschina.net/liufukin/blog/2218981

你可能感兴趣的文章
微软能重拾辉煌还是就此沉寂?
查看>>
我的友情链接
查看>>
rndc reconfig
查看>>
阿里巴巴理想主义者-厉建宇的离职信
查看>>
InnoDB存储引擎下快速创建索引
查看>>
关于IBM服务器引导盘安装提示硬盘小于8G报错
查看>>
php.ini配置文件详解
查看>>
linux sort命令参数及用法详解---linux将文本文件内容加以排序命令
查看>>
win7+ubuntu虚拟机之安装vmware tools步骤
查看>>
利用shell和iptables实现自动拒绝恶意试探连接SSH服务
查看>>
访问控制
查看>>
linux下oracle静默安装---亲测可以安装
查看>>
2016年4月8日作业
查看>>
SSL *** 安全解决方案
查看>>
linux进程的管理
查看>>
C++关键字(static-register-atuo-extern-volatile-const)
查看>>
jmeter-参数化与断言实战
查看>>
ios培训 教你清理ios项目不用的图片
查看>>
瞻博网络收购AppFormix“升级”的产品,听说财富500强企业都在用
查看>>
PHP 处理接口保证数据安全性
查看>>