vue服務端打包及自動部署

上次給CI環境搭建好了,此次寫了一個腳本用於服務端打包及部署使用,解決了前端須要頻繁打包的問題,即時將代碼推到工程庫,服務端自動打包做發佈,而後測試人員即時測試,儘早發現問題。php

發佈原理:前端

我沒有經過軟鏈的方式做發佈,由於目前在Dev和Test環境也不須要用到回滾的地方,就是直接將打包好的文件解壓到指定的目錄下面。node

主要流程以下:nginx

  1. gitlab-runner中.gitlab-ci.yml配置經過不一樣的分支,觸發不一樣的構建腳本git

  2. 構建腳本拉取最新代碼,而後安裝依賴及打不一樣環境的包web

  3. 將打好的包,經過scp傳遞到Dev/Test所在的服務器shell

  4. 經過ssh觸發Dev / Test的發佈腳本,主要是將壓縮包解壓到網站目錄。npm

  5. 做清理工做服務器

主要用到的腳本ssh

.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工程了,不過因爲時間關係,上面的腳本好多異常性沒有做太多處理,這個在後續的使用中繼續完善,目前是保證能基本可用。讓測試人員用起來就行。

相關文章
相關標籤/搜索