喝杯咖啡,一键部署前端项目

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 

277b400a03d1e2a4b36fbfd59a89f650.gif

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 

来源:悟空聊架构


8d8c55620dfb12be09c5fe1b1076e5c6.png
目录

这次我们要接着上面的话题聊下如何通过 Jenkins 工具一键部署 Gitlab 上前端代码到服务器。

前提条件:该演示案例所用到的前端代码基于 Angular 框架,如果你用的是 Vue 框架,同样适用。

一、前端部署和后端部署差异:

  • 前端只需要把前端工程生成静态文件丢到服务器上即可,而后端不只需要将 jar 包丢到服务器,还需要重启服务。

  • 前端打包需要依赖 nodejs。而且 nodejs 的版本也需要高度适配前端所用的技术框架的版本(如 Angular JS 的版本)。

  • 后端打包需要依赖 Maven。Maven 版本不需要和 JDK 的版本高度适配。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

二、前端部署依赖

在编译打包的时候,我们需要安装指定的 NodeJS 版本和 NPM 版本。

2.1 NodeJS

Node.js是一个基于Chrome V8引擎的JavaScript运行环境 ,它使得JavaScript能够在服务端运行。Node.js是对Google V8引擎进行的封装,是服务器端的JavaScript解释器,极大地扩展了JavaScript的使用范围。如今,JavaScript不仅用于创建Web应用程序,还用于桌面应用程序、移动应用程序等各个领域。

我部署的 Jenkins 的在本机部署的,Windows 版本。因用 Jenkins 的 NodeJS 插件打包失败,所以在本地安装了 NodeJS,对应的版本为 18.10。NodeJS 的安装包可以到 NodeJS 的官网上获取。安装包地址如下:

https://nodejs.org/dist/

可以通过 node -v 命令查看 node 版本。

90a8804308d57dc9fe42e84d01e6dbfb.png
查看 node 版本

如果你想使用 Jenkins 的 NodeJS 插件,可以在这下载安装。

2b200c6e5f9d93dd601de9bda9bc416f.png
NodeJS 插件
2.2 NPM

npm 则是Node.js的包管理器 ,全称为Node Package Manager。npm则提供了管理JavaScript代码库和依赖的工具。

在打包前端项目时,需要通过 npm run build 打包。

npm run build 是一个npm命令,用于在项目中运行预定义的构建脚本。当在项目的根目录中执行这个命令时,npm会查找package.json文件中的"scripts"字段,并执行对应的构建命令。

安装 nodejs 时会自动安装 NPM。通过命令 npm -v 可以查看 npm 安装的版本。

dcca203d0236aacffc87905d112f9820.png
查看 npm 安装的版本

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

三、Jenkins 前端部署思路

84f1c4efa4045b98fa0b1c8377ccc704.png
  • 通过 Jenkins 从 Git 仓库获取代码

  • 通过命令删除 Jenkins 工作空间的前端编译文件

  • 通过 npm 安装依赖

  • 通过 npm run build 编译打包前端项目

  • 通过压缩命令将编译好的目录压缩成一个文件 tar.gz

  • 通过 Jenkins ssh 插件将压缩包文件 tar.gz 拷贝到 linux 服务器

  • 通过文件操作命令将之前的前端项目备份

  • 通过解压命令将编译的压缩包解压到指定目录

四、配置任务

4.1 配置拉取的代码仓库
  • 仓库 URL

  • 用户名和密码

83eb5a6cc77bbb11a4cc724b6a8a37e8.png

Jenkins 会从 Git 仓库拉取代码到本地工作空间,如下图所示:

34b958decfec792cd9673287812a2e74.png

Jenkins 会从 Git 仓库拉取代码到本地工作空间

4.2 删除 Jenkins 工作空间的编译文件

通过添加 Execute Windows batch command 配置来删除 Jenkins 工作空间的编译文件以及压缩包文件

14fdd0ea580a9eaf0af7438fe0dc45f6.png
删除 Jenkins 工作空间的编译文件
del /q/a/f "%workspace%\dist\*.*"
del /q/a/f "%workspace%\dist.tar.gz"
4.3 编译项目

通过添加 Execute Windows batch command 配置来执行打包命令。因多个 npm 命令放在同一个 command 里面执行会报错,所以拆分成了多个命令。如下所示,拆分成了 3 个命令。

7c2decca43c413cfdf2256225313a12a.png

执行上面的 npm 命令后,会在 Jenkins 工作空间生成对应的 node_modules 目录和编译文件,如下图所示:

4a35984c9ad8d44519d28195a559f334.png
4.4 压缩前端编译文件

将前端编译的 dist 目录压缩成 dist.tar.gz 包

4e0de86ac0e24263c1e68ab8eea198df.png
4.5 拷贝和解压编译文件
4.5.1 安装插件

拷贝安装包需要用到一个插件:Publish Over SSH。

Dashboard>Manage Jenkins->插件管理->Avaliable plugins。

下图是已经安装好了这款 SSH 插件的截图。

ce41e2d74ae42c425bd2203a7274c8fc.png
安装好了这款 SSH 插件的截图

配置这个插件的全局配置:

  • SSH Server  Name:远程服务器的名字,后面在配置拷贝包的时候可以根据名字选择拷贝到哪台服务器。

  • Hostname:SSH Server 的 Hostname。

  • Username:SSH Server 登录名和密码或密钥。

  • Remote Directory:指定将文件拷贝到哪个目录。

示例配置如下所示:

611b9e6b20cc6cbe165eea05a289d692.png
远程服务器地址
4.5.2 拷贝编译文件的压缩包

通过 ssh 插件拷贝文件的配置如下图所示:

b257fba54346abb5c6abe8f3d803906c.png
通过 ssh 插件拷贝文件的配置
  • SSH Server:指定要将文件拷贝到哪个服务器,格式为 <用户名>@<ip 地址>。

  • Transfer Set Source files:jenkins 编译后的 前端项目 地址。通过之前的编译信息我们知道,dist 包地址在如下路径:

C:\ProgramData\Jenkins\.jenkins\workspace\<Jenkins 任务名>\dist.tar.gz
  • Remove prefix:要移除的文件路径前缀。

  • Remte directory:拷贝到哪个路径下,如果之前已经配置过全局的文件夹,则拷贝的文件会放到 <全局文件夹>/之下,如果全局文件夹之下没有这个 Remote directory 目录,则创建一个。这里我们不需要配置,全局配置已经可以满足条件了。

4.5.3 备份和解压服务器上的前端文件

在上传打包好的前端包之前,需要将应用服务器上的前端文件备份。

备份的步骤如下:

  • 在远程服务器创建一个备份目录 bak

  • 在备份目录bak上创建一个以当前时间作为目录名的目录。

  • 将远程服务器的上 前端目录 重命名为原文件名+时间戳的名字。

92a894c2284d136a39bcc0e811d6e964.png
备份和解压
#备份文件
cd /nfs-data/wukongliaojiagou/web-bak
timestamp=$(date +%Y%m%d%H%M%S)
mkdir ${timestamp}
cd /nfs-data/wukongliaojiagou

mv admin ./web-bak/${timestamp}/admin-${timestamp}
mv front ./web-bak/${timestamp}/front-${timestamp}
mv control ./web-bak/${timestamp}/control-${timestamp}

cd /nfs-data/wukongliaojiagou

# 解压文件
tar -zxvf dist.tar.gz

# 拷贝文件到前端目录
cp -r ./dist/admin admin
cp -r ./dist/front front
cp -r ./dist/control control

exit
4.6 测试执行结果

通过点击 Build Now 按钮执行这个任务,可以看到执行成功,如下所示。

8a75f1c4350b65f0320843e228bd390d.png

欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

fac3e9c7c5339c7bf065eddd910f49a9.png

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

f36b0e961c6cf1f58e38033026d09a9b.png

1b80d03e9de39d84c5a6352dc778c58f.pngceaa1184065ffb8f47801ec0ce1b50fa.png9953e5daa61a33183c03e40c018b5e1e.png4c9ea9342a03937a6c08e09e3b0480ee.png

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值