文档章节

jenkins 编译 vue 项目、远程发布项目 脚本

MadDragon
 MadDragon
发布于 01/05 19:48
字数 1740
阅读 19
收藏 0

第三版命令(升级)

#!/bin/bash
echo '''
#######################################################
# $Name             : buildPro.sh	                                
# $Version          : v3.0                                 
# $Function         : release/on-line for jboss Script 
# $Author           : Mad Dragon
# $Create Date      : 2019-1-5 16:09:42
# $email            : 395548460@qq.com
# $Description      : 通用项目部署 shellscript 脚本
#######################################################
'''

set -e

# start: config...
echo "==================start: 项目信息========================="
# 需要远程上传的服务器
# serviceNameLst="root@192.168.2.150 root@172.30.34.210"
serviceNameLst=$1
echo "serviceNameLst $serviceNameLst"
# workSpacePath 工作区间地址
workSpacePath="${WORKSPACE}"
# workSpaceName 项目名
# 一般为项目名: 驼峰写法 customer-center-app ==》customerCenterApp
workSpaceName="${JOB_BASE_NAME}"
deployProHome="home"
deployProConfig="proconfig"
deployProCommon="common"
deployProPath="/$deployProHome/$deployProConfig/$deployProCommon"
deployProName="deployPro.sh"
# 项目文件压缩包名 默认 dist.tar.gz
resourceName="dist.tar.gz"
# 项目部署地址
projectPath="/home/project/${workSpaceName}"
# 临时文件存放地址 从远程拉取的项目文件存放的地方
transferPath="/home/project/transfer/${workSpaceName}"
# 备份 项目文件压缩包名
filename="${JOB_NAME}_${BUILD_ID}.tar.gz"
# 备份 项目文件存放地址
backPath="/home/back/${JOB_BASE_NAME}"
# end: config...

nodeV=$(node -v)
npmV=$(npm -v)

echo """
#######################################################
变量配置:

#   serviceNameLst  : $serviceNameLst
#   workSpacePath   : $workSpacePath
#   workSpaceName   : $workSpaceName
#   deployProHome   : $deployProHome
#   deployProConfig : $deployProConfig
#   deployProCommon : $deployProCommon
#   deployProPath   : $deployProPath
#   deployProName   : $deployProName
#   resourceName    : $resourceName
#   projectPath     : $projectPath
#   transferPath    : $transferPath
#   filename        : $filename
#   backPath        : $backPath
    
系统环境:

#   node 版本       : $nodeV
#   npm 版本        : $npmV
#######################################################
"""

# start: function...........
printf "\n\n"
printf "\n\n"
echo "==================start: 项目编译========================="
printf "\n\n"
echo "001、更新依赖 install         ====》"
npm install

printf "\n\n"
echo "002、编译 build               ====》"
npm run build

printf "\n\n"
echo "003、压缩文件 $resourceName   ====》"
cd dist
tar -zcf $resourceName *

printf "\n\n"
mkdir -p $projectPath
echo "004、创建 $projectPath        ====》"

printf "\n\n"
rm -rf $projectPath/$resourceName
mv $resourceName $projectPath/
echo "005、移动文件 $projectPath/$resourceName         ====》"

printf "\n\n"
echo "006、目录结构                 ====》"
ls $projectPath

printf "\n\n"
echo "==================start: 远程上传文件========================="
echo "007、start:远程上传文件...                        ====》"
printf "\n\n"
for serviceName in $serviceNameLst
do
    echo "serviceName: $serviceName "
ssh -t $serviceName<<EOF
echo "=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*==*=*=*==*=*=*=*=*==*=*=*=*=*=*==*=*=*=*=*=*==*=*="
printf "\n\n"
echo "[debug]:查看ip ====>"
ip add

printf "\n\n"
mkdir -p $transferPath
echo "      [debug]:创建 transferPath:$transferPath"

mkdir -p $deployProPath
echo "      [debug]:创建 deployProPath:$deployProPath"

mkdir -p $projectPath
echo "      [debug]:创建 projectPath:$projectPath"

mkdir -p $backPath
echo "      [debug]:创建 backPath:$backPath"
printf "\n\n"
EOF
    
    scp -r "$projectPath/$resourceName" "$serviceName:$transferPath"
    echo "          [debug]:上传 $projectPath/$resourceName 到 $serviceName:$transferPath  成功!"
    printf "\n\n"

done

printf "\n\n"
echo "end:远程上传文件..."

printf "\n\n"
echo "撒花结束 *★,°*:.☆( ̄▽ ̄)/$:*.°★* 。"

printf "\n\n"
echo "==================start:项目部署========================="

for serviceName in $serviceNameLst
do
    ssh -t $serviceName<<EOF
echo "=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*==*=*=*==*=*=*=*=*==*=*=*=*=*=*==*=*=*=*=*=*==*=*="
printf "\n\n"
echo "[debug]:查看ip ====>"
ip add

printf "\n\n"
rm -rf $projectPath/* 
echo "      [debug]:删除 $projectPath/* 旧文件 成功" 

printf "\n\n"
ls $projectPath

printf "\n\n"
mv "$transferPath/$resourceName" "$projectPath/"
echo "      [debug]:移动 压缩包文件 $transferPath/$resourceName 到 $projectPath 成功" 

printf "\n\n"
cd $projectPath/
pwd

printf "\n\n"

tar -zxf $resourceName
echo "      [debug]:将 $projectPath/$resourceName 解压 $projectPath 成功" 

printf "\n\n"

mv "$projectPath/$resourceName" $backPath/$filename
echo "      [debug]:将文件 $projectPath/$resourceName 备份到 $backPath/$filename 成功"
printf "\n\n"
EOF

done

# ----------------------------------------------


第二版命令(升级)

1、本机shell操作

#!/bin/bash
set -e

# author:Mad Dragon
# email:395548460@qq.com
# 通用项目部署 shellscript 脚本
echo "==================start build project========================="
# start: config...

# 需要远程上传的服务器
serviceNameLst="root@192.168.2.150 root@172.30.34.210"
echo "serviceNameLst $serviceNameLst"

# workSpacePath 工作区间地址
workSpacePath="${WORKSPACE}"

# workSpaceName 项目名
# 一般为项目名: 驼峰写法 customer-center-app ==》customerCenterApp
workSpaceName="${JOB_BASE_NAME}"
echo "workSpaceName $workSpaceName"

deployProHome="home"
echo "deployProHome $deployProHome"

deployProConfig="proconfig"
echo "deployProConfig $deployProConfig"

deployProCommon="common"
echo "deployProCommon $deployProCommon"

deployProPath="/$deployProHome/$deployProConfig/$deployProCommon"
echo "deployProPath $deployProPath"

deployProName="deployPro.sh"
echo "deployProName $deployProName"

# 项目文件压缩包名 默认 dist.tar.gz
resourceName="dist.tar.gz"
echo "resourceName $resourceName"

# 项目部署地址
projectPath="/home/project/${workSpaceName}"
echo "projectPath $projectPath"

# 临时文件存放地址 从远程拉取的项目文件存放的地方
transferPath="/home/project/transfer/${workSpaceName}"
echo "transferPath $transferPath"

# 备份 项目文件压缩包名
filename="${JOB_NAME}_${BUILD_ID}.tar.gz"
echo "filename $filename" 

# 备份 项目文件存放地址
backPath="/home/back/${JOB_BASE_NAME}"
echo "backPath $backPath" 

# end: config...


# start: function...........
echo "proPath: $projectPath"

echo "node 版本:"
node -v

echo "npm 版本:"
npm -v

printf "\n\n"
echo "更新依赖 install"
npm install

printf "\n\n"
echo "编译 build"
npm run build

printf "\n\n"
echo "压缩文件 $resourceName"
cd dist
tar -zcf $resourceName *

printf "\n\n"
mkdir -p $projectPath
echo "创建 $projectPath"

printf "\n\n"
rm -rf $projectPath/$resourceName
mv $resourceName $projectPath/
echo "移动文件 $projectPath/$resourceName"

printf "\n\n"
echo "目录结构"
ls $projectPath

printf "\n\n"
echo "start:远程上传文件..."

printf "\n\n"
for serviceName in $serviceNameLst
do
    echo "serviceName: $serviceName "
ssh -t $serviceName<<EOF
printf "\n\n"
echo "[debug]:查看ip"
ip add

printf "\n\n"
mkdir -p $transferPath
echo "[debug]:创建 transferPath:$transferPath"

mkdir -p $deployProPath
echo "[debug]:创建 deployProPath:$deployProPath"

mkdir -p $projectPath
echo "[debug]:创建 projectPath:$projectPath"

mkdir -p $backPath
echo "[debug]:创建 backPath:$backPath"
printf "\n\n"
EOF
    
    scp -r "$projectPath/$resourceName" "$serviceName:$transferPath"
    echo "[debug]:上传 $projectPath/$resourceName 到 $serviceName:$transferPath  成功!"
    printf "\n\n"

done

printf "\n\n"
echo "end:远程上传文件..."

printf "\n\n"
echo "撒花结束 *★,°*:.☆( ̄▽ ̄)/$:*.°★* 。"

printf "\n\n"
echo "==================deploy build success========================="

for serviceName in $serviceNameLst
do
    ssh -t $serviceName<<EOF
printf "\n\n"
echo "[debug]:查看ip"
ip add

printf "\n\n"
rm -rf $projectPath/* 
echo "[debug]:删除 $projectPath/* 旧文件 成功" 

printf "\n\n"
ls $projectPath

printf "\n\n"
mv "$transferPath/$resourceName" "$projectPath/"
echo "[debug]:移动 压缩包文件 $transferPath/$resourceName 到 $projectPath 成功" 

printf "\n\n"
cd $projectPath/
pwd

printf "\n\n"

tar -zxvf $resourceName
echo "[debug]:将 $projectPath/$resourceName 解压 $projectPath 成功" 

printf "\n\n"

mv "$projectPath/$resourceName" $backPath/$filename
echo "[debug]:将文件 $projectPath/$resourceName 备份到 $backPath/$filename 成功"
printf "\n\n"
EOF

done

# ----------------------------------------------


第一版命令

1、本机shell 操作

o "==================start build project========================="

# start: config...

# 需要远程上传的服务器
serviceName1="root@192.168.2.150"

# workSpaceName 工作区间名   
# 一般为项目名: 驼峰写法 customer-center-app ==》customerCenterApp
workSpaceName="${JOB_BASE_NAME}"

# 项目文件压缩包名 默认 dist.tar.gz
resourceName="dist.tar.gz"

# 项目部署地址
projectPath="/home/project/${workSpaceName}"

# 临时文件存放地址 从远程拉取的项目文件存放的地方
transferPath="/home/project/transfer/${workSpaceName}"

# end: config...

echo 'proPath:'
echo $projectPath

echo 'node 版本:'
node -v

echo 'npm 版本:'
npm -v

echo '更新依赖 install'
npm install

echo '编译 build'
npm run build

echo '压缩文件'
cd dist
tar -zcf $resourceName *

echo '移动文件 $projectPath/$resourceName'

echo '判断文件是否存在'
if test -e $projectPath
then
    echo '文件已存在! ${projectPath}'
else
    echo '文件不存在! ${projectPath}'
    mkdir $projectPath
fi

rm -rf $projectPath/$resourceName
mv $resourceName $projectPath/


echo '目录结构'
ls $projectPath

echo 'start:远程上传文件...'

echo '判断文件是否存在'
if ssh $serviceName1 test -e $transferPath
then

    echo '文件已存在! ${serviceName1}:${transferPath}'
else
    echo '文件不存在! ${serviceName1}:${transferPath}'
    ssh -t $serviceName1 mkdir $transferPath/
fi

scp -r $projectPath/$resourceName $serviceName1:$transferPath/
echo 'end:远程上传文件...'


echo '撒花结束 *★,°*:.☆( ̄▽ ̄)/$:*.°★* 。'
echo "==================deploy build success========================="

# ----------------------------------------------



2、免密登录远程服务器后操作

#!/bin/bash
echo "==================start deploy project========================="
echo '项目运行服务器。。。。'

# start: config...

# workSpaceName 工作区间名   
# 一般为项目名: 驼峰写法 customer-center-app ==》customerCenterApp
workSpaceName="${JOB_BASE_NAME}"

# 项目文件压缩包名 默认 dist.tar.gz
resourceName="dist.tar.gz"

# 远程项目存放地址
originPath="root@172.30.34.188:/home/project/${workSpaceName}"

# 临时文件存放地址 从远程拉取的项目文件存放的地方
transferPath="/home/project/transfer/${workSpaceName}"

# 项目部署地址
projectPath="/home/project/${JOB_BASE_NAME}"

# 备份 项目文件压缩包名
filename="${JOB_NAME}_${BUILD_ID}.tar.gz"

# 备份 项目文件存放地址
backPath="/home/back/${JOB_BASE_NAME}"

# end: config...

echo '查看ip'
ip add 

echo '进入项目目录 ${transferPath}' 

echo '判断文件是否存在'
if test -e $transferPath
then

    echo '文件已存在! ${transferPath}'
else
    echo '文件不存在! ${transferPath}'
    mkdir $transferPath
fi

cd $transferPath/ 

echo '远程下载文件开始 ${originPath}/${resourceName}'
scp -r $originPath/$resourceName $transferPath

echo '删除 ${JOB_BASE_NAME}旧文件' 

echo '判断文件是否存在'
if test -e $projectPath
then

    echo '文件已存在! ${projectPath}'
else
    echo '文件不存在! ${projectPath}'
    mkdir $projectPath
fi

rm -rf $projectPath/* 

echo '移动 压缩包文件 到 ${projectPath}' 
mv dist.tar.gz $projectPath/

echo '进入 ${JOB_BASE_NAME} 目录' 
cd $projectPath/

echo '解压 dist.tar.gz' 
tar -zxf $resourceName

echo '将文件备份到 ${backPath}/${filename}'

echo '判断文件是否存在'
if test -e $backPath
then

    echo '文件已存在! ${backPath}'
else
    echo '文件不存在! ${backPath}'
    mkdir $backPath
fi

mv dist.tar.gz $backPath/$filename

echo "==================deploy project success========================="

© 著作权归作者所有

MadDragon
粉丝 5
博文 40
码字总数 21551
作品 0
杭州
程序员
私信 提问
Jenkins前端项目持续部署

前后端分离的开发模式下,往往前端只需将一个包含js,html,css以及其他静态资源的dist目录发给后端。 最直观的就是vue-cli,create-react-app,自定义脚手架中的npm run build命令,本质上,...

趁你还年轻233
2018/08/28
0
0
陷入jenkins自动化部署的坑

原文地址 背景 Jenkins官网 Build great things at any scale The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and aut......

qiufeihong2018
04/25
0
0
Vue-CLI 3.x 自动部署项目至服务器

前言 平时部署前端项目流程是:先部署到测试环境ok后再发布到生产环境上,部署到测试环境用 xshell 连上服务器,然后用 xftp 连接服务器,然后本地 build 项目,接着把 build 好的文件通过 ...

nxmin
04/01
0
0
Vue-Cli3插件实战一:vue-cli-plugin-dll

前述 版本的发布距今已经过了大半年,前后迭代了50多个版本,终于趋于稳定;这里不得不得感叹vue开源团队对vue技术栈的倾力贡献,使得vue社区的前端工程化实践又向前迈了一大步。相比版本的'...

微笑向暖_Tini
04/26
0
0
vue UI —— 告别webpack配置

vue UI 告别webpack配置 [TOC] vue-cli 3.0 的候选版本也已经发布多时了。vue-cli 3.0 版本为我们提供了集 为一体的可视化界面vue ui,妈妈再也不用担心我不懂配置啦~让我们来一起尝尝鲜吧~...

dante丶
2018/08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

python读写Excel

最近小编在处理各种.xlsx表格的数据处理和计算的工作,目前python用于操作表格的模块有很多,功能各有千秋。本文主要讲的是xlwt用于写,xlrt用于读。 表格写入 简单的写入功能可用xlwt模块,...

所谓向日葵族
29分钟前
5
0
Flink Checkpoint 问题排查实用指南

在 Flink 中,状态可靠性保证由 Checkpoint 支持,当作业出现 failover 的情况下,Flink 会从最近成功的 Checkpoint 恢复。在实际情况中,我们可能会遇到 Checkpoint 失败,或者 Checkpoint...

大涛学长
30分钟前
5
0
深入理解JVM,类加载器

本人免费整理了Java高级资料,一共30G,需要自己领取。 传送门:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的...

李红欧巴
32分钟前
34
0
使用vuepress写项目帮助文档

vuepress 官网 vuepress 是使用vue驱动的静态网站生成器,与Docsify 不一样的是编译它后是静态网页可以直接拷贝到其它项目中使用。 目录结构 docs:用于存储markdown文件 docs.vuepress:用于...

MeiJM
34分钟前
7
0
idea google翻译插件网络连接超时问题

idea翻译插件之前一直用的好好的,最近莫名不能使用了。总结下问题解决办法: 由于idea激活弹窗频繁弹出开启了本地proxy 1.国内用户默认是translate.google.cn的,除非你设备的语言环境为非中...

1135831485
46分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部