vue服务端打包及自动部署
上次给CI环境搭建好了,这次写了一个脚本用于服务端打包及部署使用,解决了前端需要频繁打包的问题,即时将代码推到工程库,服务端自动打包作发布,然后测试人员即时测试,尽早发现问题。
发布原理:
我没有通过软链的方式作发布,因为目前在Dev和Test环境也不需要用到回滚的地方,就是直接将打包好的文件解压到指定的目录下面。
主要流程如下:
gitlab-runner中.gitlab-ci.yml配置通过不同的分支,触发不同的构建脚本
构建脚本拉取最新代码,然后安装依赖及打不同环境的包
将打好的包,通过scp传递到Dev/Test所在的服务器
通过ssh触发Dev / Test的发布脚本,主要是将压缩包解压到网站目录。
作清理工作
主要用到的脚本
.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工程了,不过由于时间关系,上面的脚本好多异常性没有作太多处理,这个在后续的使用中继续完善,目前是保证能基本可用。让测试人员用起来就行。
vue服务端打包及自动部署的更多相关文章
- [vue] vue服务端渲染nuxt.js
初始化 使用脚手架工具 create-nuxt-app 快速创建 npx create-nuxt-app <项目名> npx create-nuxt-app 执行一些选择 在集成的服务器端 ...
- vue服务端渲染简单入门实例
想到要学习vue-ssr的同学,自不必多说,一定是熟悉了vue,并且多多少少做过几个项目.然后学习vue服务端渲染无非解决首屏渲染的白屏问题以及SEO友好. 话不多说,笔者也是研究多日才搞明白这个服务 ...
- 解析Nuxt.js Vue服务端渲染摸索
本篇文章主要介绍了详解Nuxt.js Vue服务端渲染摸索,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下.如有不足之处,欢迎批评指正. Nuxt.js 十分简单易用.一个简单 ...
- Egg + Vue 服务端渲染工程化实现
在实现 egg + vue 服务端渲染工程化实现之前,我们先来看看前面两篇关于Webpack构建和Egg的文章: 在 Webpack工程化解决方案easywebpack 文章中我们提到了基于 Vue ...
- vue服务端渲染提取css
vue服务端渲染,提取css单独打包的好处就不说了,在这里主要说的是抽取css的方法 要从 *.vue 文件中提取 CSS,可以使用 vue-loader 的 extractCSS 选项(需要 vue ...
- vue服务端渲染之nuxtjs
前言 本篇主要针对nuxtjs中的一些重要概念整理和代码实现! 在学习vue服务端渲染之前,先搞清楚几个概念: 什么是客户端渲染(CSR) 什么是服务端渲染(SSR) CSR和SSR有什么异同 客户端 ...
- vue服务端渲染axios预取数据
首先是要参考vue服务端渲染教程:https://ssr.vuejs.org/zh/data.html. 本文主要代码均参考教程得来.基本原理如下,拷贝的原文教程. 为了解决这个问题,获取的数据需要位 ...
- Nuxt.js vue服务端渲染
一.为什么要用Nuxt.js 原因其实不用多说,就是利用Nuxt.js的服务端渲染能力来解决Vue项目的SEO问题. 二.Nuxt.js和纯Vue项目的简单对比 1. build后目标产物不同 vue ...
- Vue 服务端渲染(SSR)
什么是服务端渲染? 简单理解是将组件或页面通过服务器生成html字符串,再发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序. 服务端渲染的优点 更好的SEO,搜索引 ...
随机推荐
- 函数的防抖---js
执行规定一段时间后执行 <input type="text" id="inp" /> <script> var oInp = docum ...
- 4-1-JS数据类型及相关操作
js的数据类型 判断数据类型 用typeof typeof "John" // alert(typeof "John") 返 ...
- RiscV汇编介绍(1)-编译过程
从c/c++源文件,到可以执行文件,需要以下几个步骤: 预处理/编译 汇编 链接 下面我们以hello world程序为例,展示整个编译链接过程. 1. 编写hello.c代码 #include &l ...
- Div转为Canvas简直不要太好玩~~~
html2canvas库 今天发现了一个神奇的玩意,简直不要太好玩~~ 用canvas做动画是很难,但是div能比canvas简单不少,只是因为canvas中不能操作Dom元素 这款神器,可以直接将D ...
- pyquery解析库
这一篇整理一下pyquery这个解析库.还是菜,若有错误的地方,欢迎大家随时指正.......(come on.......) pyquery:是一个css选择器,再使用时,也需要传入HTML文本来初 ...
- angular跳转和传参
使用routerLink跳转 <a routerLink=["/exampledetail",id]></a> <a routerLink=[&quo ...
- [LOJ 2133][UOJ 131][BZOJ 4199][NOI 2015]品酒大会
[LOJ 2133][UOJ 131][BZOJ 4199][NOI 2015]品酒大会 题意 给定一个长度为 \(n\) 的字符串 \(s\), 对于所有 \(r\in[1,n]\) 求出 \(s\ ...
- Paper | BLIND QUALITY ASSESSMENT OF COMPRESSED IMAGES VIA PSEUDO STRUCTURAL SIMILARITY
目录 1. 技术细节 1.1 得到MDI 1.2 判别伪结构,计算伪结构相似性 2. 实验 动机:作者认为,基于块的压缩会产生一种伪结构(pseudo structures),并且不同程度压缩产生的伪 ...
- 详解Redis基本命令
当redis环境搭建结束后,接下来需要掌握并了解redis的一些相关命令,本篇文章主要从实际操作的层面来与大家分享redis基本命令, 具体包括:Redis五大基本类型命令(Strings,Lists ...
- JAVA学习知识杂烩
idea快捷键使用:https://blog.csdn.net/youanyyou/article/details/97072410 int值类型与引用类型比较的坑:https://www.cnblo ...