Jenkins + Github + Nginx 自动化部署 Vue 项目

简介: Jenkins + Github + Nginx 自动化部署 Vue 项目

前言

看起来好像 Jenkins 非常复杂,但其实只要自己多实操几次,一次又一次的去想如何偷懒,你就可以一步一步发现更多的知识点,要相信好奇永远是你的第一老师。

关于如何使用 Docker 安装 Jenkins,Jenkins 插件安装配置、系统配置等,都已在 关于 Docker + Jenkins +Github 实现自动化 中全部陈述。

先说说本文最后做出来的效果:

  1. 本地开发,push 到 github 仓库后
  2. 触发 Github 的钩子函数,通知 Jenkins ,进行重新构建
  3. Jenkins 构建完成后,将前端打包出来的 dist 目录,发送到部署的服务器上的 Nginx 容器挂载的部署目录下
  4. 进行访问测试

除了第一步是需要自己动手外,其余部分实现自动化。

前一篇文章主要介绍了 Jenkins 如何构建一个 Maven 项目,但其实大家可以看到 Jenkisn 还有其他几钟不同的构建项目的方式。

1704465780949.jpg

本篇文章用到的是自由风格式(Freestyle project)部署前端项目。也很简单的哈。

一、初始化项目

如果需要跟着文章实操,大致需要以下环境:

  • 一台云服务器或本地虚拟机
  • 服务器或虚拟机上需要联网、Docker 环境
  • 一个 Github 账号
  • 开发机器上需要有 Git 和 开发环境

1、初始化 Vue 项目

其实我也不知道这一步该不该写......

重点就是大家准备一个可以运行和打包的 Vue 项目。

如果有小伙伴,没的话,我有~,给你指路: jenkins-vue-demo

拉下来之后,把 .git 文件删除掉,然后重新关联你的github 仓库就好~

2、推送至 Github 仓库

  • 在 github 建立一个仓库 (默认大家都会哈~ 不会可以留言的,摸鱼的时候会回复的,别慌)
  • 然后在本地项目目录下执行下面的命令,其实不写,在你创建仓库的时候也会给出这些提示命令
git init 
  git add .
  git commit -m "init"
  git branch -M main
  git remote add  远程仓库地址
  git push origin main

二、设置 Github

1、设置通知 WebHook

在github 上点击仓库,按下图顺序

1704465796780.jpg

1704465807190.jpg

之后点击创建即可

2、创建一个 Personal access tokens

1704465828341.jpg

1704465830769.jpg

1704465858641.jpg

1704465860516.jpg

三 、Jenkins 部署 Vue 项目

1、安装 Nodejs 插件

1704465875038.jpg1704465877119.jpg

等待完成即可

1704465890640.jpg

2、配置 Nodejs

1704465896826.jpg

本地机器查看 node 版本 命令为 node -v

1704465904356.jpg

3、系统配置

之前我们在第四小节,只是在Jenkins中进行了打包,并未发布在服务器上。

如果要发布在服务器上,我们还需要配置一下 远程服务器信息。

此处还需要下载两个插件

稍详细的描述在我上一篇文章:Docker + Jenkins + GitHub 自动化部署 Maven 项目

1704465912480.jpg

找到两个配置:

1、SSH remote hosts

2、SSH Servers

1704465919657.jpg

1704465935882.jpg

1704465929713.jpg

对了记得点击保存哈,不然又得重现填写。

4、创建一个自由风格式任务

1704465943054.jpg

1704465945082.jpg

1704465947421.jpg

(图片说明:指定分支应为 main,图中有误)

1704465961464.jpg

1704465975112.jpg

1704465977804.jpg

1704465980871.jpg

1704466000655.jpg

(图片说明:变量无需填写)

1704466007244.jpg

(图片说明:选择 secret text)

1704466017060.jpg

(图片说明:描述就是取一个名称)

1704466022599.jpg

(图片说明:选择自己添加的那个 凭据)

1704466029464.jpg

1704466036478.jpg

npm cache clear --force # 清理 npm 缓存,之前我一直报错,第一次之后大家可以修改修改 ~
  npm --registry https://registry.npm.taobao.org install cluster # 配置淘宝镜像
  npm install --force 
  npm run build
  echo "打包完成"

执行到这一步时,我们已经可以测试我们当前的这个自由风格的任务了。

点击立即构建,看看git有没有成功拉取,有没有打包成功。

第一次构建的时间也会稍长,需要拉取项目,下载Nodejs,下载依赖等,这些信息都会在控制台上可查看:

1704466044499.jpg

1704466047366.jpg

成功的输出应该如下:

1704466057376.jpg

1704466062296.jpg

5、浅提一下Nginx

谈到部署前端项目时,大部分情况下我们不可避免的会谈到Nginx服务器。

Nginx 这个中间件,不管是对于后端还是前端,都是需要了解的一个服务器。

想要深入的了解它,可能还需要你好好的花费一些时间。

关于Docker 安装 Nginx 部署 前端项目 ,我之前已经写好,链接:Docker 安装 Nginx


后面的小节,都是默认大家已经安装好了Nginx~

我的Nginx 的 server配置如下:

location /hello {
      alias    /usr/share/nginx/html/www/hello/dist;
      try_files $uri $uri/ /hello/index.html;
      index  index.html index.htm;
  }

我们部署成功访问的路径是:IP : Port/hello/ ,例如:192.168.1.100/hello/ 就是访问此项目的的地址。

详细的还是得大家去了解一下。

6、修改Jenkins 任务配置

打开任务配置,直接划到最下面

1704466096969.jpg

1704466099274.jpg

然后选中之前配置的服务器

1704466110204.jpg

#/bin/bash
 # 其实在这里执行的命令,就是在你选择的那台服务器上执行的命令
  echo ">>>>>>>>>>>>>开始执行   此处的 /home/nginx/html/web 是我 nginx 容器 挂载的目录 >>>>>>>>>>>>>"
  cd /home/nginx/html/www/hello/dist/
  rm -rf  dist
  echo ">>>>>>>>>>>>>cd到Jenkins工作挂载目录下>>>>>>>>>>>>>"
  cd /home/jenkins/workspace/jenkins-vue-demo
  echo ">>>>>>>>>>>> 将dist文件夹复制到 nginx 的挂载目录下 >>>>>>>>>>>>>"
  cp -r dist /home/nginx/html/www/hello/
  echo ">>>>>>>>>>>>复制成功  启动成功>>>>>>>>>>>>>"

注意:此处我是直接采取将 dist 目录直接放在了 Nginx 部署的目录下的,请注意:我这里并非是一个合格的方式,只能说是用来写Demo倒也无妨。请大家不要照抄~.

7、最佳实践

看过上一篇文章的读者可能知道,真正的应用场景中这样的部署并不安全,一旦出现bug,甚至都没法立马回退版本,或者出现意外情况没法快速横向扩容.

所以大概率下,最佳实践应当是

  1. 在 vue 项目中增加 Dockerfile 文件 和 nginx.conf 配置文件
  2. 部署时,首先将 dist + Dockerfile + nginx.conf 打成镜像 (docker build 相关明令)
  3. 将打包出来的镜像上传至存储应用的服务器或DockerHub(私服仓库)
  4. 最后在部署服务器上从存储镜像的那台服务器上拉取镜像,执行 docker run 相关命令进行发布.
  5. 测试

原本是没有这一小节的,但是读了一遍,感觉有点遗漏,就新增了这一段。

当时在写的时候,前期的Nginx环境已经搭好,一定程度上少了一些思考,所以就补了这一小节。

关于 Vue 项目利用 Dockerfile 打包成镜像部署,以往也写过一篇不成熟的博客,如果有想改造成镜像发布的小伙伴,可以参考一下。链接:Docker 部署 vue项目

8、测试自动构建

我们在本地修改文件,然后推送到远程仓库中,你刷新jenkins页面,就会发现它已经开始在构建啦。

1704466152864.jpg1704466116388.jpg

(图片说明:此处我放上的是刚写文的测试)

请注意:Github 因为是公用资源,有一定程度延迟,这一点在自己搭建的GitLab的私有仓库上是没有的。

看看我滴测试结果~

1704466126846.jpg

后记

写到这里本文也算是结束了,感觉这篇文章的质量比起上一篇的质量略低,可能里面带有一些重复性的内容,导致写起来有些懈怠了,望各位见谅。

看完这两篇文章,可能会有小伙伴产生一种感觉自己会用 Jenkins 了,哈哈,我也有这种感觉,但其实还差得很常远的,不过自己简单使用是肯定没啥问题了。

这个专栏还在继续更新,两篇入门文章总算是搞定了~

希望让你有所收获~,很开心你读到这里,听我讲完废话

如果今天的你也没有收到情书的话,那就让我送一封情书给你吧💌,

你不是一个人,你还有我。

玫瑰已然到了花期

目录
相关文章
|
1月前
|
JSON Kubernetes 安全
找到啦,我们已上车,Github 27000+ star,研发团队必备开源工具项目,真丝滑!!!
Trivy 是一款高效灵活的开源安全扫描工具,支持容器镜像、文件系统、Kubernetes 等多目标扫描,具备快速、易用、集成性强等特点,适用于 DevSecOps 全流程安全检测。
|
26天前
|
人工智能 编解码 JSON
不看后悔!GitHub 开源 MultiTalk .8k star 强大的人语音+图像绑定项目
MultiTalk 是 GitHub 上的开源项目,具备音频驱动、多人对话视频生成功能。支持多路音频与图像绑定,实现高同步唇动与角色互动,适用于教学、虚拟人及短视频创作,已获 8k 星标。
135 0
|
26天前
|
安全 数据可视化 项目管理
精品,Github 5000+ star,小型研发团队必备商业开源项目
DooTask 是一款开源在线项目任务管理工具,具备文档协作、流程图、任务分发、IM沟通等功能,支持私有部署与数据加密,已在 GitHub 获得 5000+ 星标,适合中小团队提升协作效率。
|
27天前
|
人工智能 自然语言处理 JavaScript
Github又一AI黑科技项目,打造全栈架构,只需一个统一框架?
Motia 是一款现代化后端框架,融合 API 接口、后台任务、事件系统与 AI Agent,支持 JavaScript、TypeScript、Python 多语言协同开发。它提供可视化 Workbench、自动观测追踪、零配置部署等功能,帮助开发者高效构建事件驱动的工作流,显著降低部署与运维成本,提升 AI 项目落地效率。
130 0
|
1月前
|
数据采集 人工智能 搜索推荐
完蛋啦,爆火Github项目,用微信聊天记录打造专属AI数字分身,我都不敢相信!!
WeClone 是一个基于微信或 Telegram 聊天记录微调大语言模型的开源项目,可打造专属 AI 数字分身。支持文本、图片等多模态数据,具备语言风格迁移和语音克隆功能,实现“说话像你”的AI角色。项目提供完整训练流程,支持本地部署,保护隐私,适用于个人数字分身、纪念机器人、客服助手等场景。
203 0
|
1月前
|
存储 人工智能 自然语言处理
让你拥有一个AI大脑,这个32.1k Github项目是你不错的选择,支持PDF、Markdown、代码、视频成为你的知识内容
Quivr 是开源全栈 RAG 平台,助你打造“第二大脑”,支持多文档类型与多种 LLM,实现智能搜索与聊天。具备语义检索、本地部署、隐私保护等功能,适用于个人知识管理与企业知识库,界面简洁易用,是高效智能问答的理想选择。
|
1月前
|
人工智能 数据可视化 开发者
惊艳!GitHub 开发者一键接入!4.2k star 项目 Champ,用一张照片秒变动画
“Champ” 致力于从一张静态人物图生成流畅连续的人体动画,支撑精准姿态控制与形状一致性,其核心思路是将 3D 参数化人体模型(SMPL)引入扩散模型:
|
人工智能 数据安全/隐私保护 计算机视觉
GitHub爆款神器 | IOPaint:21.7k star 开源AI图像修复项目,竟能秒删水印、拓展画幅!
IOPaint 是一款由 Sanster 团队开发的开源图像处理工具,集成多种 SOTA AI 模型,支持图像擦除、对象替换、文本绘制和图像外扩等功能。它操作简便,一键安装,适用于 Windows、macOS、Linux 和 Apple Silicon 系统,适合摄影爱好者、电商从业者及内容创作者使用,大幅提升图像处理效率。
|
5月前
|
开发工具 C++ git
五分钟看懂推送本地项目到 GitHub新手菜鸡
五分钟看懂推送本地项目到 GitHub新手菜鸡
|
5月前
|
人工智能 数据可视化 前端开发
自学软硬件工程师776天精简版github项目同步推送步骤
注意 这篇文章不是水内容的,虽然我之前也写过 github推送同步的内容。

热门文章

最新文章

推荐镜像

更多