配置自动化部署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链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...