你好,我是悟空。
本文目录如下:
目录
上次我们已经聊过关于部署的两个话题:
这次我们要接着上面的话题聊下如何通过 Jenkins 工具一键部署 Gitlab 上前端代码
到服务器。
前提条件:该演示案例所用到的前端代码基于 Angular 框架,如果你用的是 Vue 框架,同样适用。
在编译打包的时候,我们需要安装指定的 NodeJS 版本和 NPM 版本。
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 版本。
查看 node 版本
如果你想使用 Jenkins 的 NodeJS 插件,可以在这下载安装。
NodeJS 插件
npm 则是Node.js的包管理器,全称为Node Package Manager。npm则提供了管理JavaScript代码库和依赖的工具。
在打包前端项目时,需要通过 npm run build 打包。
npm run build 是一个npm命令,用于在项目中运行预定义的构建脚本。当在项目的根目录中执行这个命令时,npm会查找package.json文件中的"scripts"字段,并执行对应的构建命令。
安装 nodejs 时会自动安装 NPM。通过命令 npm -v 可以查看 npm 安装的版本。
查看 npm 安装的版本
Jenkins 会从 Git 仓库拉取代码到本地工作空间,如下图所示:
Jenkins 会从 Git 仓库拉取代码到本地工作空间
通过添加 Execute Windows batch command
配置来删除 Jenkins 工作空间的编译文件以及压缩包文件
删除 Jenkins 工作空间的编译文件
del /q/a/f "%workspace%\dist\*.*"
del /q/a/f "%workspace%\dist.tar.gz"
通过添加 Execute Windows batch command
配置来执行打包命令。因多个 npm 命令放在同一个 command 里面执行会报错,所以拆分成了多个命令。如下所示,拆分成了 3 个命令。
执行上面的 npm 命令后,会在 Jenkins 工作空间生成对应的 node_modules 目录和编译文件,如下图所示:
将前端编译的 dist 目录压缩成 dist.tar.gz 包
拷贝安装包需要用到一个插件:Publish Over SSH。
Dashboard>Manage Jenkins->插件管理->Avaliable plugins。
下图是已经安装好了这款 SSH 插件的截图。
安装好了这款 SSH 插件的截图
配置这个插件的全局配置:
示例配置如下所示:
远程服务器地址
通过 ssh 插件拷贝文件的配置如下图所示:
通过 ssh 插件拷贝文件的配置
C:\ProgramData\Jenkins\.jenkins\workspace\<Jenkins 任务名>\dist.tar.gz
Remote directory
目录,则创建一个。这里我们不需要配置,全局配置已经可以满足条件了。在上传打包好的前端包之前,需要将应用服务器上的前端文件备份。
备份的步骤如下:
bak
。bak
上创建一个以当前时间作为目录名的目录。备份和解压
#备份文件
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
通过点击 Build Now 按钮执行这个任务,可以看到执行成功,如下所示。
本文主要讲解前端项目如何通过 Jenkins 来进行编译,并将编译后的文件拷贝到服务器。
后续会讲解如何通过 Jenkins 流水线以及传参的配置方式来部署项目。