svn+jenkins+IIS 自动化打包部署uni-app
2020-08-20
svn+jenkins+IIS 自动化打包部署uni-app
流程:svn提交代码---jenkins自动拉取最新代码至本地服务器---jenkins本地编译打包成H5模式---jenkins压缩代码并拷贝到云服务器---jenkins远程执行Windows脚本部署H5代码
环境:
svn:Windows 172.10.0.108
jenkins:Centos7.6 172.10.0.21
IIS:Windows(部署项目的服务器) 47.115.150.122(云服务器)
项目源码:https://github.com/dcloudio/hello-uniapp
默认svn服务器已搭建好,参考https://www.cnblogs.com/kinwing/p/11093843.html
默认jenkins已搭建好(自行百度),并且已安装nodejs和npm,参考https://www.jianshu.com/p/e8eb4d3c51e5
默认IIS已安装好(自行百度)
默认云服务器已安装sshd,端口22,创建虚拟账号test,密码11 ,参考https://www.jianshu.com/p/a30e71a77279
默认云服务器安装了解压zip包的工具,下载地址http://gnuwin32.sourceforge.net/packages/unzip.htm
直接双击安装即可,然后把安装目录下的bin目录下的unzip.exe文件拷贝到C:\Windows目录下
在svn对应的目下创建账号密码,以便jenkins能够连接svn代码库,实时拉取最新代码
![](https://img.haomeiwen.com/i20525318/a37bca3e3d23401b.jpg)
在svn中建一个仓库,将项目代码提交到仓库中
jenkins页面创建项目test,自由风格,源码管理配置如下
![](https://img.haomeiwen.com/i20525318/5938e3fcc45019ec.png)
构建触发器配置如下(每分钟检测svn的代码是否有更新)
![](https://img.haomeiwen.com/i20525318/298a702c93a7cad3.png)
构建,选择执行脚本shell,内容如下
pwd #查看当前所在位置,/var/lib/jenkins/jenkins-home/workspace/test (点击构建后,默认在jenkins的工作目录下自动生成与项目名称一致的目录,目录下是从svn拉取下来的代码)
cd .. #退出到jenkins的工作目录
whoami #查看当前的用户身份,测试用的,可删掉
rm -rf ./Test/test #删除旧项目
mv -f ./test ./Test #把svn更新后的项目移至Test目录下
cd ./Test
rm -rf ./my-project/src/*
cp -rf ./test/* ./my-project/src/ #将项目源码放到src目录下
cd ./my-project/
rm -rf node_modules dist #删除旧的依赖和打包项
npm install #编译
npm run build:h5 #打包成h5
cd ./dist/build/h5/
zip -r h5.zip ./* #将h5目录下的内容打包成zip包
#脚本作用:将zip包和Windows脚本发送到目标主机的指定目录下
/usr/bin/expect /var/lib/jenkins/jenkins-home/shell/cp-test.sh #执行脚本
#脚本作用:远程执行Windows脚本
/usr/bin/expect /var/lib/jenkins/jenkins-home/shell/exec.sh
jenkin服务器操作
npm install -g @vue/cli #安装全局vue-cli
cd /var/lib/jenkins/jenkins-home/workspace
mkdir Test
cd Test
vue create -p dcloudio/uni-preset-vue my-project #下载正式版的uni-app框架(下载过程中选择默认模板)
cd /var/lib/jenkins/jenkins-home/
mkdir shell #专门方脚本的地方
cd shell
vim cp-test.sh
#!/usr/bin/expect
set timeout 30
spawn scp -P22 -r /var/lib/jenkins/jenkins-home/workspace/Test/my-project/dist/build/h5/h5.zip /var/lib/jenkins/jenkins-home/shell/deploy.bat test@172.10.0.108:/D:/Web/
expect "password:"
send "11\r"
expect eof
vim deploy.bat test #windows 脚本,用的时候删掉注释和多余空格
rd /S/Q D:\Web\test\h5 #删除目录及目录下的所有内容
md D:\Web\test\h5 #创建目录
unzip D:\Web\h5.zip -d D:\Web\test\h5 #解压jenkins拷贝过来的项目
del /S/Q D:\Web\h5.zip #删除压缩包
del /S/Q D:\Web\deploy.bat #删除脚本
vim exec.sh
#!/usr/bin/expect
set timeout 30
spawn ssh test@172.10.0.108 -p22 "D:/Web/deploy.bat"
expect "password:"
send "11\r"
expect eof
chmod a+x cp-test.sh deploy.bat test exec.sh #赋予可执行权限
云服务器上操作
创建目录D:\Web\test\h5
打开 Internet信息服务(IIS)管理器
建网站
![](https://img.haomeiwen.com/i20525318/740916e1bec23b13.png)
最后回到jenkins页面,点击构建项目即可
观察控制台输出和网站变化