配置自动化部署Jenkins和Gitea
配置自动化部署
这里使用的是Jenkins+Gitea
如果不知道怎么安装Jenkins和Gitea可以参考下面文章
https://blog.csdn.net/weixin_46533577/article/details/134644144
我的另一篇文章
介绍
前端
先说下自己的情况,因为自己服务器原因,使用的服务器内存太小只有4g,如果这时候再使用npm run build进行打包时会出现卡死,因为占用内存会比较多所以会很卡,导致访问服务器时卡顿非常严重,比如有些服务无法访问等。
在下面的介绍中,我将使用本地打包的方式,打包完成后在推送到服务器上,如果你的服务器性能出色可以我也将在这里介绍如何在服务器中线上打包。
除此之外线下打包之后推送好处是,节省了服务器的内存消耗,因为打包所以要下载相关的包npm install命令有些包会有好几个G这样,对于普通用户的服务器最大可能就40G-70G这样几个项目就消耗了十几个G。损耗很大。
后端
这里以前端为例,后端还需要下载maven插件
前提简要
在CentOS 7上切换到中文,可以按照以下步骤进行操作:
-
安装中文语言支持:打开终端,并使用
yum包管理器安装中文语言支持。运行以下命令:sudo yum groupinstall "Chinese Support"这将安装中文语言包和输入法支持。
-
配置系统语言:在终端中运行以下命令来配置系统默认语言:
sudo localectl set-locale LANG=zh_CN.UTF-8这将将系统的默认语言设置为简体中文。
-
重新登录:注销当前用户并重新登录,以使语言设置生效。
下载安装必要插件
下载插件
这里需要下载的插件有:
Blue Ocean
Ant Plugin
Git plugin
GitHub plugin
Generic Webhook Trigger Plugin
Git server Plugin
NodeJS Plugin
Maven Integration plugin

这几个插件包含了,git的相关推送、前端使用的nodejs、
安装插件
点击搜索插件之后进行安装

勾选插件之后进行安装,因为我这里都已经安装过了,在这边我只是举例说明下,貌似也找不到想装的插件了,就随便举个例子怎么下载

在下载时会有些慢,但是没有关系最后会下载好的,有没有疑问?为什么在下载时候就勾选了一个,但是到了下载界面会有很多个?
因为在下载时这些都是捆绑包,所以会很多。
推荐点击下面的安装完成后重启Jenkins,反正都是要重启的

之后会显示正在重启

插件升级,在这个板块中可以查询是否有可以升级的插件,有的话可以自行升级

完成后的样子

开始搭建
创建Gitea仓库
如果自己知道怎么创建仓库可以跳过这个步骤,说实话这个说起来有点多余。

之后按照这个步骤创建仓库

将内容推送到服务器上,因为怕有人恶意攻击,所以把地址栏遮起来了?

之后推送,如果你想和我一样设置多仓库推送,比如之前就已经存在了但是想再设置一个可以输入以下命令
git remote set-url --add origin 你的地址
之后去Gitea上复制地址

新建项目
点击新建Item

输入你的名称,点击第一个根据自己需求来设置,如果你是前端项目点击第一个即可,当然流水线也是可以但是有些麻烦这里就不介绍了。
建议设置成英文,因为后面会设置触发器中文感觉有些不靠谱

这里举个例子

点击创建项目后
输入必要的信息

填写令牌可以自定义,这个用于后面推送触发,如果这里不设置,但是你想要推送时候触发还是要设置,不如在这里直接设置。
名字不建议中文


触发器地址,格式内容为下面所显示的。
这里的地址为

http://你的服务器地址/generic-webhook-trigger/invoke?token=输入框中的token
举个例子
http://bunny.com:8080/generic-webhook-trigger/invoke?token=bunnybbs-server
token就是输入框输入的名字
之后选择增加构建步骤

之后选择这个,根据自己需求来,如果你是Linux就选择这个毕竟比较熟悉Linux命令

这里建议先删除下,因为很多时候推送,如果存在了会覆盖,但是防止出错建议先删除,根据自己想法和需求操作。
建议每个命令分开写下防止构建之后出错什么的

操作服务器
查看下Jenkins所在的目录,我的目录在这里,之后进入到你的目录中去。
当然这时候你所想要的目录并不存在!!!
因为我们还没有构建所以看不到自己新建的目录,比如这篇文章所说的bunnybbs-server这个目录。
所以这时候要假想这个目录存在,或者你先构建下让代码拉倒这里这个目录下就会显示了。
比如前端目录会有打包好的dist目录或者是build目录
# 先删除原有目录。这里根据需求来
rm -rf /www/wwwroot/BunnyBBS/test
# 之后将推送的目录复制到自己需要的目录下
cp -a /root/.jenkins/workspace/bunnybbs-server/dist /www/wwwroot/BunnyBBS/test

点击保存

打开 Blue Ocean
当一切设置好后回到首页,点击Blue Ocean

点击创建的项目

点击运行,但是你们是第一次创建这个项目所以页面会出现弹窗,反正只要点击运行就行了。
如果不运行的话,后面设置推送无法完成也看不到效果!!!

等待拉取完成,这时候不妨去设置下web钩子(webhooks)不妨碍当前进程和操作

完成后的界面

这时候查看服务器中文件,会发现刚刚构建的文件在这里,点击去查看,已经被推送过来了


设置web钩子
点击设置

添加钩子

将之前所说的地址复制到这里,规则既是上面所述的规则


点击激活钩子即可

点击这个链接进入

点击测试推送

之后就可以了


相关文章:
配置自动化部署Jenkins和Gitea
配置自动化部署 这里使用的是JenkinsGitea 如果不知道怎么安装Jenkins和Gitea可以参考下面文章 https://blog.csdn.net/weixin_46533577/article/details/134644144 我的另一篇文章 介绍 前端 先说下自己的情况,因为自己服务器原因,使用的服务器内…...
VSCODE+QEMU+WSL调试RISCV代码(SBI、kernel)
前言 最近在对RISC-V架构比较感兴趣,正好手头有《RISC-V体系结构编程与实践》的书籍,就打算跟随笨叔将这块的知识学习起来,最开始当然是需要搭建一个基础的实验平台,本来笨叔是贴心的提供了VMare的环境,奈何天生叛逆的…...
二叉树(判断是否为对称二叉树)
题目(力扣): 观察题目,只需判断该二叉树是否对称。 判断二叉树是否对称,就可以换位去判断该二叉树的左子树和右子树是否对称。 这时就可以写一个辅助函数来方便判断。 该函数是判断两颗树是否镜像对称,这…...
STM32开发学习(地址映射)
LED灯代码: #define PERIPH_BASE ((unsigned int)0x40000000)#define AHB1PERIPH_BASE (PERIPH_BASE 0x00020000)#define GPIOF_BASE (AHB1PERIPH_BASE 0x1400)#define GPIOF_MODER *(unsigned int*)(GPIOF_BASE0x00) #define GPIOF_BSRR *(uns…...
证明E(X+Y) =E(X) + E(Y)
E(XY) E(X) E(Y)的成立是不需要X和Y相互独立的!!! 离散型随机变量 E ( X Y ) ∑ i 1 n ∑ j 1 m ( x i y j ) P { X x i , Y y j } ∑ i 1 n ∑ j 1 m x i P { X x i , Y y j } ∑ i 1 n ∑ j 1 m y j P { X x i , Y y j …...
ClickHouse入门手册1.0
1、数据类型 1.1 整数类型: ClickHouse中整型数据均为固定长度(可以设置长度参数,但是会被忽略),整型包括有符号整型和无符号整型。 有符号整型:Int8,Int16,Int32,Int64,Int128,Int256 无符号整型:UInt8,UInt16,UI…...
10个火爆的设计素材网站推荐
所谓聪明的女人没有米饭很难做饭,设计师也是如此。如何找到优秀的设计材料是每个设计师的痛点,国内材料网站收费,但也限制使用范围和期限,大多数外国设计网站不能打开或需要特殊互联网使用,有一定的安全风险。 作为一…...
SQL注入 - CTF常见题型
文章目录 题型一 ( 字符型注入 )题型二 ( 整数型注入 )题型三 ( 信息收集SQL注入)题型四 ( 万能密码登录 )题型五 ( 搜索型注入文件读写 )题型六 (…...
android keylayout键值适配
1、通过getevent打印查看当前keyevent数字对应事件和物理码 2、dumpsys input 查看输入事件对应的 KeyLayoutFile: /system/usr/keylayout/Vendor_6080_Product_8060.kl 3、通过物理码修改键值映射,修改/system/usr/keylayout/目录下的文件...
python读取excel自动化生成sql建表语句和java实体类字段
1、首先准备一个excel文件: idtypenameidint学号namestring姓名ageint年龄sexstring性别weightdecimal(20,4)体重scoredecimal(20,4)分数 2、直接生成java字段和注释: import pandas as pddf pd.read_excel(test.xlsx, sheet_nameSheet1)for i in ran…...
Unity求向量A在平面L上的投影向量
如题:求向量A在平面L上的投影向量(图左) 即求 其实等价于求向量,那在中,,所以只需要求即可 而就是在平面L的法向量的投影坐标,所以代码就是 /// <summary>/// 求向量A在平面B上的投影向量/// </summary>/// <para…...
人机交互2——任务型多轮对话的控制和生成
1.自然语言理解模块 2.对话管理模块 3.自然语言生成模块...
【数据结构】八大排序 (三)
目录 前言: 快速排序 快速排序非递归实现 快速排序特性总结 归并排序 归并排序的代码实现 归并排序的特性总结 计数排序 计数排序的代码实现 计数排序的特性总结 前言: 前文快速排序采用了递归实现,而递归会开辟函数栈帧࿰…...
Redis 命令处理过程
我们知道 Redis 是一个基于内存的高性能键值数据库, 它支持多种数据结构, 提供了丰富的命令, 可以用来实现缓存、消息队列、分布式锁等功能。 而在享受 Redis 带来的种种好处时, 是否曾好奇过 Redis 是如何处理我们发往它的命令的呢? 本文将以伪代码的形式简单分析…...
python爬虫进阶教程之如何正确的使用cookie
文章目录 前言一、获取cookie二、程序实现三、动态获取cookie四、其他关于Python爬虫技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Pytho…...
【hacker送书第4期】推荐4本Java必读书籍(各送一本)
第4期图书推荐 Java从入门到精通(第7版)内容简介参与方式 项目驱动零基础学Java内容简介参与方式 深入理解Java高并发编程内容简介参与方式 Java编程讲义内容简介参与方式 Java从入门到精通(第7版) 内容简介 《Java从入门到精通&…...
[密码学]DES
先声明两个基本概念 代换(substitution),用别的元素代替当前元素。des的s-box遵循这一设计。 abc-->def 置换(permutation),只改变元素的排列顺序。des的p-box遵循这一设计。 abc-->bac DES最核心的算法就是…...
15个超级实用的Python操作,肯定有你意想不到的!
文章目录 1)映射代理(不可变字典)2)dict 对于类和对象是不同的3) any() 和 all()4) divmod()5) 使用格式化字符串轻松检查变量6) 我们可以将浮点数转换为比率7) 用globals()和locals()显示现有的全局/本地变量8) import() 函数9) …...
GitHub上8个强烈推荐的 Python 项目
文章目录 前言1. Manim2. DeepFaceLab3. Airflow4. GPT-25. XSStrike6. 谷歌图片下载7. Gensim8. SocialMapper总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③…...
什么是依赖倒置原则
1、什么是依赖倒置原则 依赖倒置原则(Dependency Inversion Principle,DIP)是指高层模块不应该依赖于低层模块,它们都应该依赖于抽象。换句话说,具体类之间的依赖关系应该尽可能减少,而抽象类或接口之间的…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
