【CICD】Jenkins 构建部署前端项目

news2024/11/16 5:59:25

出于对 CICD 的研究与学习,在初步学习了解并安装 jenkins 后,记录一下对于使用 jenkins 部署前端项目的过程。

1.目标

希望能够实现的是:在本地使用 git 工具将项目代码推送到远程仓库(本篇使用 gitee 演示),利用 webHooks 触发 jenkins,将构建后的代码推送到指定的服务器,从而实现自动构建部署。

2.准备工作

  1. gitee 项目仓库
  2. jenkins (安装 NodeJs、Gitee、Publish Over SSH 等插件)
  3. 网页服务器(用于项目部署成功后网页的展示,也可以是jenkins服务器,使用不同端口即可)

主要介绍一下 jenkins 插件的安装与配置的过程,所有插件的安装都可以在【Manage Jenkins】-【Manage Plugins】-【Avaliable Plugins】中搜索找到:

NodeJs

在这里插入图片描述

Publish Over SSH

在这里插入图片描述
由于我之前已经安装过【Gitee】,这里不做展示,在【Installed Plugins】中能够找到;插件安装最好选择安装后重启Jenkins,也就是【Download now and install after restart】;这有一个问题,如果 Jenkins 服务是通过容器启动的,那么在新版的 Jenkins 中自动重启将会失败,需要手动重启 Jenkins 容器,服务才能正常访问。

在安装完以上插件后,我们需要配置 NodeJS 环境以及 SSH 配置:
先说 NodeJS 环境,在【Manage Jenkins】-【Global Tool Configuration】中能够看到
在这里插入图片描述
根据项目环境需要选择对应的配置并保存,这里使用的是 Node16.18.0:

在这里插入图片描述
② 再就是 SSH 的配置,前往【Manage Jenkins】-【Configure System】,我们能够看到【 Publish over SSH】:
在这里插入图片描述
点击 SSH Servers 模块的【Add】按钮,填写别名、自己服务器相关 ip 、选择连接方式等等;我这里使用的是密码直连的方式,也可以选择秘钥:
在这里插入图片描述
填写完成后,可以通过【Test Configuration】测试配置是否可用,显示 success 代表能够正常使用,同时别忘点击保存:
在这里插入图片描述

3.执行

A.新建项目

在准备工作完成之后,我们回到面板,新建一个自由风格的 Jenkins 项目:
在这里插入图片描述

B.填写基本描述信息(可选)

在这里插入图片描述

C.配置源码管理【Source Code Management】

这就是远程仓库的管理配置了,选择【Git】,然后填写对应的仓库地址,然后在【Credentials
】下方点击【Add】添加登录仓库的用户名以及密码,最后选择刚添加的配置(默认 master 分支,可根据自身需要自行更改):
在这里插入图片描述

D.配置构建触发【Build Triggers】

这里使用的是 Gitee 的仓库,在准备工作中下载的也是 Gitee 的插件;可根据不同远程管理仓库选择不同的构建触发;将 Gitee webhook URL 回填到 Gitee 中,并且点击【Generate】生成 Secret Token 填写到 Gitee 配置项中,具体如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

E.配置构建环境【Build Environment】

顾名思义,就是配置在代码构建时所需的环境,这里具体是指 NodeJs 的环境,我们在准备工作中已经安装并配置好了所需要的环境,现在直接选择【Provide Node & npm bin/ folder to PATH】使用 【Node16.18.0】即可:
在这里插入图片描述

F.配置构建步骤【Build Steps】

第一步,点击【Add build step】选择【Execute shell】,输入构建指令:

node -v 
npm -v

npm config set registry https://registry.npm.taobao.org #切换淘宝镜像
npm install 
npm run build

rm -rf dist.tar.gz # 删除原有的压缩包
tar -zcvf dist.tar.gz dist/* # 打包 dist 下的所有文件

在这里插入图片描述
第二步,将构建打包后的代码推送到指定文件夹,并将代码解压到服务指定位置:

rm -rf /www/wwwroot/front_end_demo/dist # 删除原先代码
tar -zxvf /root/code/front_end/dist.tar.gz -C /www/wwwroot/front_end_demo/ # 解压代码

在这里插入图片描述

G.执行构建

在本地推送代码到远程仓库后,触发构建,最终按照预期,成功将前端项目部署;并且通过宝塔配置网站服务后,通过 IP + Port 的形式进行访问:
在这里插入图片描述
在这里插入图片描述

4.总结

大致总结一下:

  1. Git 推送代码,触发webhook;
  2. Jenkins 服务被触发,执行构建;
  3. Jenkins 通过 SSH 推送代码至服务器.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/342530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[C][KEIL5][IAR] 全局取消结构体对齐

文章目录一、 正常编译:二、 -fpack-struct 全局取消结构体对齐三、 结论:结构体字节不进行对齐的用途(1)减小内存占用的空间(2)直接将结构体作为通信协议(在低带宽下通讯)&#xff…

【Java】代码块的细节你搞懂了吗(基础知识七)

希望像唠嗑一样,one step one futher。 目录 (1)代码块的应用场景 (2)代码块的细节 1.static 代码块只加载一次 2.当调用类的静态成员时,类会加载 3. 使用类的静态成员时,static代码块会被执…

大数据第一轮复习笔记

linux: 添加用户 useradd 删除用户 userdel useradd -d指定组 添加组 groupadd 删除组 groupdel 创建目录 mkdir -p 删除目录 rm -rf 创建目录 touch cat -n 查看文件(显示行号)

Axure 9 收录不同效果的制作过程

效果类别 一、默认选中实现单选效果 1、默认选中 点击组件,右键选择selected字样; 2、实现单选效果 点击所有组件,右键选择selected group,填好命名,并设置选中时的组件样式;选择其中一个组件&#xf…

EMQX Cloud Serverless 正式上线:三秒部署、按量计费的 MQTT Serverless 云服务

近日,全球领先的开源物联网数据基础设施软件供应商 EMQ 正式发布了 MQTT Serverless 云服务 —— EMQX Cloud Serverless 的 Beta 版本,开创性地采用弹性多租户技术,用户无需关心服务器基础设施和服务规格伸缩所需资源,仅用三秒即…

十个程序员编程时的简单方法与技巧

你要记住,你写的代码是给人看的 作为一名程序员,希望在你某天离开公司后回想起的若干个开心时刻中,有一个会是因为你面对自己刚刚出炉了一份让自己心动的代码的那份感动,而不要成为上面提到的那个“离开后,公司才知道…

day11_面向对象

今日内容 零、 复习昨日 一、一日一题(数组,OOP) 二、面向对象练习(方法参数返回值) 三、局部变量&成员变量 四、this关键字 五、构造方法 六、重载 七、封装 小破站同步上课视频: https://space.bilibili.com/402601570/channel/collectiondetail?…

Spring MVC

一、Spring MVC介绍 a. Spring MVC是一个Web框架 b. Spring MVC是基于Servlet API构成的 MVC 是 Model View Controller 的缩写。 MVC 是⼀种思想,⽽ Spring MVC 是对 MVC 思想的具体实现。 学习Spring MVC目标: a.连接功能:将用户&#xff…

JSON学习笔记

♥课程链接:【狂神说Java】一小时掌握JSON_哔哩哔哩_bilibili配套的当然还要学习ajax不管是前端后端,感觉这部分内容是必须的,不然真的做项目的时候云里雾里。总体json的内容不多,具体就:1. 列表、对象等语法格式2. js…

C++复习笔记9

STL中的list的部分实现&#xff0c;包括了迭代器的整体实现思想和空间配置器的部分功能。 main.cpp //STL中的list是一个双向循环链表 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include"mymemory.h" using namespace std;class String { public:…

Python 数据可视化的 3 大步骤,你知道吗?

Python实现可视化的三个步骤&#xff1a; 确定问题&#xff0c;选择图形转换数据&#xff0c;应用函数参数设置&#xff0c;一目了然 1、首先&#xff0c;要知道我们用哪些库来画图? matplotlib Python中最基本的作图库就是matplotlib&#xff0c;是一个最基础的Python可视…

上海亚商投顾:沪指震荡上行 大消费板块全线走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。市场情绪三大指数今日震荡反弹&#xff0c;沪指全天低开高走&#xff0c;深成指、创业板指均涨超1%。工程机械板块集体大涨&a…

nodejs学习笔记1.2

1、made \\ 中括号代表可选参数 、、、、 使用path模块处理路径拼接问题 、、、、 将/进行转义/ 、、、、 http模块 web服务器 、、、 创建最基本的web服务器 我表示醉了&#xff0c;之前都没有学到&#xff0c;难怪我学得糊里糊涂 req客户端 res…

00---C++入门

1. C关键字(C98) C总计63个关键字&#xff0c;C语言32个关键字 2. 命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进…

简单易用的以太网IO控制卡:C#读写测试

今天&#xff0c;正运动小助手给大家分享一下运动控制卡之ECIO系列IO卡的用法&#xff0c;C#语言进行ECI IO卡的开发以及测试多个IO读写的交互速度。 一、ECI0032/ECI0064 IO卡的硬件介绍 1.功能介绍 ECI0032/ECI0064等ECI0系列运动控制卡支持以太网、RS232通讯接口和电脑相…

A-Ops性能火焰图——适用于云原生的全栈持续性能监测工具

对于开发及运维人员来讲&#xff0c;火焰图是一个经典的定位性能问题的方法。利用火焰图可以可视化系统资源(cpu占用、内存占用、调度、IO等)的占用情况&#xff0c;从而帮助技术人员快速定位资源异常使用的代码级根因&#xff0c;或者观察潜在性能劣化趋势&#xff0c;进而优化…

2023最新简历模板免费下载

下面分享5个简历模板网站&#xff0c;免费下载&#xff0c;建议收藏&#xff01; 2023用最漂亮的简历模板&#xff0c;让面试官眼前一亮。 1、菜鸟图库 个人简历模板|WORD文档模板免费下载 - 菜鸟图库 菜鸟图库除了有超多设计类素材之外&#xff0c;还有很多办公类素材&#…

Multimap运用

Multimap概念:Multimap的特点其实就是可以包含有几个重复key的value值&#xff0c;你可以put进多个不同的value&#xff0c;但是key相同&#xff0c;但是又不是让后面的覆盖前面的内容.业务场景:当你需要构造像Map<K,List<V>> 或者Map(K,Set<V>)这样比较复杂…

MongoDB--》基本常用命令使用

目录 数据库操作命令 选择和创建数据库 数据库的删除 集合操作命令 集合的显示创建 集合的隐式创建 集合的删除 文档基本的CRUD&#xff08;增删改查&#xff09; 文档的插入 文档的基本查询 文档的更新 删除文档 数据库操作命令 数据库常用的操作命令如下&#x…

docker基础和使用(一)

Docker 入门篇 文章目录Docker 入门篇一、docker简介1.1、docker说明&#xff1a;1.2、docker镜像说明&#xff1a;1.2.1、UnionFS&#xff08;联合文件系统&#xff09;1.2.2、docker镜像分成的好处1.2.3、docker平台架构图二、docker的常用命令1.1、手册查询1.2、docker启停和…