Jenkins连接Window服务器,webpack打包部署

Jenkins连接Window服务器,webpack打包部署

前言

由于执行webpack打包命令npm run build无法自动结束命令,一直提示“ctrl c”退出。至今我也没有解决办法,所以我分2步实现部署,一个工程是打包,一个工程是部署。
准备工作
- 不知道怎么使用ssh连接windows服务器的,参考这里windows服务器里实现通过ssh工具SecureCRT
-安装7z压缩工作,网上有人说使用winrar命令也可以,但我试了一下,在dos窗口可以使用winrar压缩命名,但jenkins里不能使用。
-系统管理->全局工具配置->NodeJS(如果没有NodeJS,去插件管理里,搜索NodeJS插件并安装),配置NodeJS环境,我使用的是nodeJs 8.11版本。

第一个工程:构建

新建job,命名是Testweb-1
源码管理:填写源码地址,不多说。
构建环境:找到Provide Node & npm bin/ folder to PATH,选择上面配置的nodeJs版本,其它默认。
构建:选择执行 windows批处理命令,执行命名npm run build。备注:事先要使用cnpm i将依赖模块安装好,如果将这2个命令一起执行的话,执行完cnpm i,jenkins就终止了,不知道原因,故我选择先安装模块。

至此,第一个工程就配置结束了,这个工程的目的就是执行npm run build命令打包项目。当然,它依然会提示ctrl c去结束窗口,我没办法,只能手动关闭构建,反正已经打包完成了。

第二个工程:上传并部署

windows服务器配置,参考Jenkins连接Window服务器,上传jar并启动
新建job,命名是Testweb-2。源码管理就不用填了,因为是部署Testweb-1下打包好的工程。
构建:选择执行 windows批处理命令,在Testweb-2工程下新建批处理文件(这个地方可以优化,批处理放在其它地方,因为你在配置的时候Testweb-2工程目录还没生成)zip.bat

cd ../Testweb-1
::亲测,使用winrar命令执行错误,jenkins报错。(winrar命令已经放在环境变量里)
::WinRAR.exe a app.zip .\app
::Rar.exe a -k -r -s -m3 -o+ -ep1 C:\Users\Administrator\.jenkins\workspace\Testweb-1\app.rar C:\Users\Administrator\.jenkins\workspace\Testweb-1\app
"C:\Program Files\7-Zip\7z.exe" a app.zip .\app
copy app.zip ..\Testweb-2
cd ../Testweb-2

构建后操作:选择send build artifacts over SSH,配置如下
这里写图片描述
我在服务器的d:\jar目录下创建一个dongliweb目录用于存放脚本。新建批处理文件build.bat

cd /d E:\dyoonPLM\nginx-1.13.1
"C:\Program Files\7-Zip\7z.exe" -y x "C:\Program Files\nsoftware\PowerShell Server 2016\sftproot\app.zip" -oE:\dyoonPLM\nginx-1.13.1\app
::删除目录
rmdir /s /q dongli
::拷贝文件夹下文件以及子文件夹下文件
mkdir dongli
xcopy /Y E:\dyoonPLM\nginx-1.13.1\app\app E:\dyoonPLM\nginx-1.13.1\dongli   /s /e /h
::删除目录下文件及子文件夹下文件,不删除目录
::del /F /S /Q app
::删除文件夹
rmdir /s /q app
nginx.exe -s reload

E:\dyoonPLM\nginx-1.13.1:是nginx目录
C:\Program Files\7-Zip\7z.exe:是7z压缩命令目录
C:\Program Files\nsoftware\PowerShell Server 2016\sftproot\app.zip:是使用power shell server上传文件的保存文件目录

整个批处理文件思路是:
将app.zip解压到nginx目录下,然后删除旧的文件夹dongli,并将解压的app目录下内容复制到donli文件夹下,删除app目录并重启nginx。

1.删除文件夹用rmdir 文件夹,删除文件夹下文件用del /F /S /Q 文件夹.
2.xcopy用于复制文件夹,并且目标目录必需存在。比如上面使用mkdir dongli创建目录

总结

至此配置结束,可以参考我的做法给出自己的优化,大至思路是这样的。当然,有很多不完美的地方,比较webpack打包后不能自动结束导致不同一键部署。

猜你喜欢

转载自blog.csdn.net/achenyuan/article/details/81407033
今日推荐