zoukankan      html  css  js  c++  java
  • vue服务端打包及自动部署

    上次给CI环境搭建好了,这次写了一个脚本用于服务端打包及部署使用,解决了前端需要频繁打包的问题,即时将代码推到工程库,服务端自动打包作发布,然后测试人员即时测试,尽早发现问题。

    发布原理:

    我没有通过软链的方式作发布,因为目前在Dev和Test环境也不需要用到回滚的地方,就是直接将打包好的文件解压到指定的目录下面。

    主要流程如下:

    1. gitlab-runner中.gitlab-ci.yml配置通过不同的分支,触发不同的构建脚本

    2. 构建脚本拉取最新代码,然后安装依赖及打不同环境的包

    3. 将打好的包,通过scp传递到Dev/Test所在的服务器

    4. 通过ssh触发Dev / Test的发布脚本,主要是将压缩包解压到网站目录。

    5. 作清理工作

    主要用到的脚本

    .gitlab-ci.yml

    stages:
      - deploy-dev
      - deploy-test
     
    deploy_develop:
      stage: deploy-dev
      tags:
        - nodejs
        - php
      script:
        - /data/scripts/ci/web_deploy_dev.sh
      only:
        - dev
        
    deploy_test:
      stage: deploy-test
      tags:
        - nodejs
        - php
      script:
        - /data/scripts/ci/web_deploy_test.sh
      only:
        - release
    

    安装依赖及打包,传送文件,web_deploy_dev.sh

    ##
    #前端工程自动化构建
    #dev环境
    ##
    
    node_path=/data/scripts/node/bin/node
    npm_path=/data/scripts/node/bin/npm
    
    product=web_cloudTax_manage_dev #不能重复
    web_path=/tmp/$product
    target_path="${web_path}/dist"
    git_path=git@172.1.1.22:WEB-Developer/cloud_manage.git
    
    
    function display(){
     if [ $? -ne 0 ]
     then
       exit -999
     fi
    }
    
    
    if [ ! -d $web_path ]
    then
      echo "创建文件夹${web_path}"
      sudo mkdir -p $web_path
      echo "进入项目路径:${web_path}"
      cd $web_path
      sudo git clone $git_path .
      display
    else
      echo "进入项目路径:${web_path}"
      cd $web_path
      display
    fi
    
    sudo chown -R gitlab-runner:gitlab-runner $web_path
    
    if [ -d $target_path ]
    then
     sudo chown -R gitlab-runner:gitlab-runner $target_path
    fi
    display
    
    sudo git checkout test-dev
    sudo git pull
    display
    
    #echo "进入项目路径:${web_path}"
    #cd $web_path
    
    echo "清除原先的dist打包文件夹"
    sudo rm -rf $target_path
    display
    
    echo "安装依赖"
    node_depency="${npm_path} i"
    $node_depency
    display
    
    echo "开始打包"
    build="${npm_path} run build:dev"
    $build
    display
    
    if [ ! -d "$target_path" ]
    then
      echo "打包失败,dist未生成"
      exit 1
    fi
    
    echo "进入打包目录${target_path}"
    cd   ${target_path}
    echo "开始创建压缩包/tmp/${product}.tar.gz"
    sudo tar  cvzf "/tmp/${product}.tar.gz" .
    display
    
    echo "======================================"
    echo "开始复制文件到部署服务器"
    
    scp /tmp/${product}.tar.gz  lc@172.11.10.68:/tmp
    echo "文件复制完成到部署服务器"
    display
    
    echo "开始服务器部署"
    
    ssh lc@172.11.10.68 /data/scripts/ci/web_deploy.sh $product.tar.gz
    display
    
    echo "清除原始压缩包"
    sudo rm -rf "/tmp/${product}.tar.gz"
    display
    exit 0
    

    发布脚本web_deploy.sh

    #! /bin/sh
    
    ##
    #将从gitlab-runner打包好的文件,拷贝到网站目录中作发布
    ##
    
    webpath=/data/vhosts/vhosts.website/test_manage.zc.com
    tar_file=$1
    tar_path="/tmp/${tar_file}"
    
    if [ ! -f "$tar_path" ]
    then
      echo "打包文件${tar_path}不存在,无法作发布处理"
      exit
    fi
    
    echo "开始拷贝文件,从${tar_path}到${webpath}"
    cp $tar_path  $webpath
    echo "复制完成"
    
    echo "进入网站目录"
    cd $webpath
    
    if [ ! -f "${webpath}/${tar_file}" ]
    then
      echo "解压包${webpath}/${tar_file}不存在,无法发布"
      exit
    fi
    
    echo "删除原来的"
    #rm -rf ${webpath}
    
    echo  "解压"
    tar xzf "${webpath}/${tar_file}"  --overwrite  .
    echo "部署完成,执行清理操作"
    chown -R nginx:nginx $webpath
    rm "${webpath}/${tar_file}"
    

    好了,通过上面的脚本就能快速构建前端的Vue工程了,不过由于时间关系,上面的脚本好多异常性没有作太多处理,这个在后续的使用中继续完善,目前是保证能基本可用。让测试人员用起来就行。

  • 相关阅读:
    react native( rn) 中关于navigationOptions中headerRight 获取navigation的问题 rn
    string与number转换
    基础面试资料
    vim快捷键大全
    Vim中的自定义快捷键
    去掉ubuntu命令行模式提示声
    模板非类型形参的详细阐述
    C++中为什么构造函数不能定义为虚函数
    C++ 深入理解 虚继承、多重继承和直接继承
    C++ 虚函数表解析
  • 原文地址:https://www.cnblogs.com/smartrui/p/10865513.html
Copyright © 2011-2022 走看看