gitlab runner 安装、注册、配置、使用(Docker部署)

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

  • 一、介绍
    • 1. 类型
    • 2. 状态
    • 3. 原理
    • 4. 部署方式
    • 5. 运行方式
  • 二、Docker中部署Gitlab Runner
    • 1. 环境
    • 2. 安装
    • 3. Token获取
    • 4. 注册
      • 4.1 交互式注册
        • 4.1.1 注册指令
        • 4.1.2 Gitlab-Url
        • 4.1.3 Runner-Token
        • 4.1.4 Runner的名称
        • 4.1.5 Runner-Tag
        • 4.1.6 Runner-Maintenance
        • 4.1.7 Runner-Executor
        • 4.1.8 Runner-Executor-Version
        • 4.1.9 完整注册流程的截图
        • 4.1.10 查看运行列表
        • 4.1.11 Gitlab平台查看Runner
        • 4.1.12 退出容器
      • 4.2 非交互式注册
        • 4.2.1 进入容器
        • 4.2.2 注册
        • 4.2.3 查看Runner
        • 4.2.4 退出容器
    • 5. 配置
      • 5.1 容器内config.toml文件查看
      • 5.2 容器外挂载目录的config.toml文件查看
    • 6. 命令使用
      • 6.1 注册指令
      • 6.2 列举运行程序
      • 6.3 验证runner是否连接
      • 6.4 注销runner
        • 6.4.1 用令牌注销
        • 6.4.2 用名称注销
        • 6.4.3 注销所有runner
    • 7. 作业演示1
      • 7.1 Gitlab创建项目并拉取到本地
      • 7.2 项目文件
      • 7.3 流程定义文件
        • 7.4 将代码推送到Gitlab
    • 8. 作业演示2


一、介绍

Gitlab Runner作为一个开源的项目,使用Go语言编写,可运行在不同系统重
Gitlab Runner用于运行作业并将结果发给gitlab服务器
Gitlab Runner与Gitlab CI结合使用,Gitlab CI是gitlab的开源持续集成服务,用于协调作业
Gitlab Runner的版本安装时应注意与Gitlab版本尽量同步以防版本差异导致报错

1. 类型

Gitlab Runner包含三种类型,分别对应三种不同情况(或者说是作用范围)
Shared:共享类型,运行整个平台的项目的作业(gitlab)
Group:项目组类型,运行特定group下的所有项目的作业(group)
Specific:项目类型,运行指定的项目作业(project)
不同的类型有对应的token,可到对应的位置获取
区别在于左上角的名称不一样,平台-Admin Area,组-组名,项目-项目名称
平台Runner
在这里插入图片描述
组Runner
在这里插入图片描述
项目Runner
这里可以看到gitlab的url和token
在这里插入图片描述

本篇在平台类型注册runner,即 使用平台类型的token进行注册runner

2. 状态

Gitlab Runner有两种状态,locked和paused
locked:无法运行项目作业
paused:不会运行作业

3. 原理

gitlab-runner注册到gitlab,gitlab中的代码更新时gitlab就会通知gitlab-runner
gitlab-runner拉取本地最新代码后执行.gitlab-ci.yaml文件定义的脚本,具体的脚本可参考官网

4. 部署方式

gitlab-runner支持多种部署方式,如本地Windows部署、容器Docker中部署、K8S集群中以pod形式部署
本篇尝试以docker容器部署及k8s集群中部署

5. 运行方式

gitlab-runner可以选择以什么执行器来运行,如docker、kubernetes、shell等
在注册时可以选择一种执行器来指定,本篇以docker为例

注:以下说明只针对建立group组且未授权root权限的用户
由于gitlab账号并不是管理员权限,仅对group具备maintainer权限,所以gitlab-runner使用group作为绑定方式
绑定关系:gitlab–gitlab-runner–创建pod运行gitlab-runner中的stages
但是,我们安装gitlab后,使用的账号为root权限,没有权限限制,故,此步骤省略无需绑定

注:为避免注册失败或后续runner不可用,gitlab-runner与gitlab最好不要安装在相同的服务器
如果只是测试环境,可在同一台进行尝试,遇到问题再解决,一般不会出问题
本篇gitlab服务在woker2节点,runner安装的位置为master主节点

二、Docker中部署Gitlab Runner

1. 环境

系统版本:Linux—centos
docker版本:24.0.7
gitlab版本:gitlab/gitlab-ce:15.6.0-ce.0
gitlab-runner版本:gitlab-runner:v15.6.0
注:gitlab-runner的版本号和gitlab的略有差异,runner的版本需加v前缀方可使用

2. 安装

为了挂载runner的配置文件,我们先创建一个文件夹用于后续挂载使用

mkdir -p /data/gitlab-runner/config

在这里插入图片描述

拉取gitlab-runner镜像,尽量与gitlab版本保持一致

docker pull gitlab/gitlab-runner:v15.6.0

在这里插入图片描述
在这里插入图片描述

运行容器

docker run -itd --restart always --name gitlab-runner \
-v /data/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:v15.6.0

在这里插入图片描述

查看运行的容器

docker ps | grep gitlab

在这里插入图片描述

进入容器查看查看版本

docker exec -it gitlab-runner bash
gitlab-runner -v

在这里插入图片描述

3. Token获取

在gitlab的平台Runner中找到对应的URL地址和Token复制准备好,以备后续注册使用
主菜单–Admin–Runner
在这里插入图片描述
如图将其复制下来
在这里插入图片描述
RuUyXm9kDKxRLkeeCLXv

4. 注册

可通过gitlab-runner register命令进行交互式注册,也可通过命令行一次性将参数配置进行非交互注册

4.1 交互式注册

4.1.1 注册指令

首先进入容器,gitlab-runner为容器名

docker exec -it gitlab-runner bash

在容器中输入注册指令

gitlab-runner register

在这里插入图片描述

4.1.2 Gitlab-Url

根据提示填写gitlab的URL地址
此IP地址就是gitlab服务的地址,如gitlab服务器访问地址为172.30.0.222:30021

http://172.30.0.222:30021/

在这里插入图片描述
注:这里需要注意的是根据提示填写的是ip地址,但实际上应该填写完整的地址加端口号,如果不加端口则默认使用80端口访问,如果我们的gitlab访问地址的端口不是80则需要在这里加上端口来避免访问失败

4.1.3 Runner-Token

根据提示填写runner的Token,我们之前复制的是平台类型的共享型token,粘贴到这里

RuUyXm9kDKxRLkeeCLXv

在这里插入图片描述

4.1.4 Runner的名称

根据提示填写Runner的描述信息,也就是runner的名称,此处填gr01,会在Gitlab界面显示并可修改,也可不填

gr01

在这里插入图片描述

4.1.5 Runner-Tag

根据提示填写Runner的Tag信息,会在Gitlab的界面显示并可修改,也可不填
后续作业可通过tag指定在哪个runner上面运行构建

01

在这里插入图片描述

4.1.6 Runner-Maintenance

根据提示填写用户权限备注,可不填

root

在这里插入图片描述

4.1.7 Runner-Executor

根据提示选择Runner使用的执行器种类并填写,建议docker

docker

在这里插入图片描述

4.1.8 Runner-Executor-Version

根据提示填写docker执行器版本,后续作业以哪个镜像版本来运行job(可在.gitlab-ci.yml中修改需要的image)
这里用docker的最新版latest

docker:latest

在这里插入图片描述
执行完以上内容即可生成一个runner的配置文件,位置为/etc/gitlab-runner/config.toml
由于我们创建runner容器时挂载了目录,该文件会同步出现在我们创建的本地挂载目录中/data/gitlab-runner/config/config.toml

4.1.9 完整注册流程的截图

在这里插入图片描述

4.1.10 查看运行列表

使用命令查看运行列表,可以看到刚注册的gr01已在列表中

gitlab-runner list

在这里插入图片描述

4.1.11 Gitlab平台查看Runner

此时我们到gitlab平台上查看我们已注册的runner
主菜单–Admin–Overview–Runners
在这里插入图片描述

4.1.12 退出容器
exit

4.2 非交互式注册

4.2.1 进入容器
docker exec -it gitlab-runner /bin/bash
4.2.2 注册

在容器中执行以下命令即可完成注册

gitlab-runner register \
--non-interactive \
--url "http://172.30.0.222:30021" \
--registration-token "RuUyXm9kDKxRLkeeCLXv" \
--executor "docker" \
--docker-image maven:latest \
--description "gr02" \
--tag-list "02" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected"

--non-interactive 非交互注册执行时添加该参数
--url gitlab服务器地址,如端口不是80则需要将端口加上
--registration-token Runner Token ,gitlab平台获取
--executor 执行器引擎,可选,建议docker
--docker-image 镜像版本,后续Runner中pipeline以此镜像版本来执行作业,该参数也可后续在.gitlab-ci.yml文件中指定
--description Runner描述信息,即Runner的名称,后续可在平台中看到也可修改
--tag-list Runner的Tag信息,后续作业可通过tag指定在哪个runner上运行构建Runner,注册成功后会在gitalbCICD界面查看
--run-untagged 运行未指定tag的作业,开启
--locked 注册成功后runner为锁定状态,关闭
--access-level runner的访问级别,not_protected表示不受保护

执行后完成注册
命令行如下

[root@k8s-master ~]# docker exec -it gitlab-runner /bin/bash
root@5befda15d9b2:/# gitlab-runner register \
> --non-interactive \
> --url "http://172.30.0.222:30021" \
> --registration-token "RuUyXm9kDKxRLkeeCLXv" \
> --executor "docker" \
> --docker-image maven:latest \
> --description "gr02" \
> --tag-list "02" \
> --run-untagged="true" \
> --locked="false" \
> --access-level="not_protected"
Runtime platform                                    arch=amd64 os=linux pid=118 revision=44a1c2be version=15.6.0
WARNING: The 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with a 'deploy' command. For more information, see https://gitlab.com/gitlab-org/gitlab/-/issues/380872 
Running in system-mode.                            Registering runner... succeeded                     runner=RuUyXm9k
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"

截图如下
在这里插入图片描述

4.2.3 查看Runner

到gitlab平台中查看新建的Runner
主菜单–Admin–Overview–Runners
如图,gr02就是我们刚刚创建的Runner
在这里插入图片描述

4.2.4 退出容器
exit

5. 配置

这一步其实就是查看config.toml文件内容然后进行简单的描述,暂时不需要做任何修改,如后续有修改的需要可根据以下参数进行修改配置

5.1 容器内config.toml文件查看

进入gitlab-runner容器中查看生成的config.toml配置文件
进入容器gitlab-runner

docker exec -it gitlab-runner bash

查看配置文件

cat /etc/gitlab-runner/config.toml

内容如下:

concurrent = 1
check_interval = 0
shutdown_timeout = 0[session_server]session_timeout = 1800[[runners]]name = "gr01"url = "http://172.30.0.222:30021/"id = 1token = "_6msnKT89DcSsr8SCW9b"token_obtained_at = 2024-01-25T04:41:12Ztoken_expires_at = 0001-01-01T00:00:00Zexecutor = "docker"[runners.custom_build_dir][runners.cache]MaxUploadedArchiveSize = 0[runners.cache.s3][runners.cache.gcs][runners.cache.azure][runners.docker]tls_verify = falseimage = "docker:latest"privileged = falsedisable_entrypoint_overwrite = falseoom_kill_disable = falsedisable_cache = falsevolumes = ["/cache"]shm_size = 0[[runners]]name = "gr02"url = "http://172.30.0.222:30021"id = 2token = "k1zsbdVfgMA_4R9syxL6"token_obtained_at = 2024-01-25T08:06:33Ztoken_expires_at = 0001-01-01T00:00:00Zexecutor = "docker"[runners.custom_build_dir][runners.cache]MaxUploadedArchiveSize = 0[runners.cache.s3][runners.cache.gcs][runners.cache.azure][runners.docker]tls_verify = falseimage = "maven:latest"privileged = falsedisable_entrypoint_overwrite = falseoom_kill_disable = falsedisable_cache = falsevolumes = ["/cache"]shm_size = 0

参数描述:
第一部分
concurrent 可并行运行作业的数量,0表示无限制
check_interval gitlab-runner检查配置的时间间隔,0表示默认3秒

第二部分[session_server]
session_timeout 作业完成后会话可以保持活动状态的描述,默认1800秒

第三部分[[runners]]
name Runner名称
url gitlab server地址和端口,如果你的gitlab访问地址端口为80则可省略端口号
token Runner的特殊令牌,不是注册令牌
token_obtained_at token获取时间
token_expires_at token过期时间
executor Runner的执行器,表示runner中pipeline以什么方式运行即如何构建项目,执行器决定了runner用什么方式在什么环境上完成gitlab分配的CI job
[runners.custom_build_dir] 允许用户为作业定义自定义构建目录
[runners.cache] 分布式缓存目录
[runners.docker] 定义docker容器参数
tls_verify 启用或禁用对docker守护程序连接的TLS验证,这里是默认的禁用(false)
image 用于运行镜像的镜像,也可在.gitlab-ci.yml中指定
privileged 使容器以特权模式运行,不安全,默认关闭
disable_entrypoint_overwrite 禁用镜像覆盖entrypoint
oom_kill_disable 内存不足时报错,不终止容器中的进程,默认关闭
disable_cache docker执行器有两个级别的缓存:全局缓存和基于docker卷的本地缓存,此配置参数表示仅作用于禁用自动创建(未映射到主机目录)缓存卷的本地配置标志
volumes 安装挂载卷与docker-v标志的语法相同
shm_size 镜像的共享内存大小(以字节为单位)

截图
在这里插入图片描述

5.2 容器外挂载目录的config.toml文件查看

当然,因为我们挂载了该文件目录,故退出容器,在宿主机的对应的挂载位置找到这个文件查看
退出容器

exit

查看挂载目录的文件/data/gitlab-runner/config/config.toml

cat /data/gitlab-runner/config/config.toml

在这里插入图片描述
后续如需修改配置,文件修改后不需要重启,每隔三秒gitlab-runner会检查配置是否修改并重新加载
如需修改检查间隔时间可修改参数check_interval的值,300表示5分钟,即后续会5分钟检查一次

6. 命令使用

gitlab-runner命令汇总
命令均为容器内使用

6.1 注册指令

容器内注册Runner到gitlab

gitlab-runner register

6.2 列举运行程序

容器中,列举保存在配置文件中的所有运行程序

gitlab-runner list

6.3 验证runner是否连接

容器内,检查注册的runner是否可以正常连接,不能验证gitlab服务是否在使用runner

gitlab-runner verify

6.4 注销runner

容器内,注销已注册的runner

gitlab-runner unregister
6.4.1 用令牌注销

使用令牌注销已注册的runner

gitlab-runner unregister --url http://gitlab.xxxx.com/ --token xxxxx
6.4.2 用名称注销

使用名称注销,同名则删除第一个

gitlab-runner unregister --name runner名称
6.4.3 注销所有runner

直接注销所有runner

gitlab-runner unregister --all-runners

7. 作业演示1

如何使用Runner来进行项目代码的打包等作业
首先需要有一个项目代码,然后在项目代码根目录需要有一个.gitlab-ci.yml文件用来定义CICD流程
主要是这个.gitlab-ci.yml文件
模拟:

流程如下
在gitlab上创建一个项目
在本地创建一个文件夹,并将gitlab上的项目克隆或者建立连接
然后在本地项目文件夹中创建两个文件index.html和.gitlab-ci.yml
然后推送代码到gitlab

7.1 Gitlab创建项目并拉取到本地

参考:Gitlab的使用

7.2 项目文件

在项目中创建文件index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Gitlab Runner CICD Test</title>
</head>
<body>
<h1>This is a test for Gitlab Runner CICD test and only html for this project</h1>
</body>
</html>

7.3 流程定义文件

在项目根目录中创建.gitlab-ci.yml

build-job:stage: buildscript:- echo "Hello, $GITLAB_USER_LOGIN!"test-job1:stage: testscript:- echo "This job tests something"test-job2:stage: testscript:- echo "This job tests something, but takes more time than test-job1."- echo "After the echo commands complete, it runs the sleep command for 20 seconds"- echo "which simulates a test that runs 20 seconds longer than test-job1"- sleep 20deploy-prod:stage: deployscript:- echo "This job deploys something from the $CI_COMMIT_BRANCH branch."

build阶段启动一个作业,输出一段文本,test阶段并行启动两个作业,分别输出一段文本,deploy阶段启动一个作业,输出一段文本,三个阶段模拟构建、测试、部署流程

7.4 将代码推送到Gitlab

将项目推送到gitlab后,后续任意提交内容都可触发流水线执行,当然也可以手动执行,项目中的CICD,选择运行流水线即可执行

8. 作业演示2

同样的,在项目的根目录中创建一个.gitlab-ci.yml文件并填充内容

stages:- maven- build- deploymaven_job:stage: maventags:- defaultonly:- masterscript:- echo "This is the first maven job"build_job:stage: buildtags:- defaultonly:- masterscript:-  echo "This is the first build job"deploy_job:stage: deploytags:- defaultonly:- masterscript:- echo "This is the first deploy job"

https://blog.csdn.net/zyy247796143/article/details/123842374
https://zhuanlan.zhihu.com/p/630393918
https://blog.csdn.net/qq_37084490/article/details/126478452
https://www.jianshu.com/p/0ca2174e34ad


感谢阅读,祝君暴富!

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

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

相关文章

SQL 系列教程(一)

目录 SQL 简介 SQL 是什么 SQL 能做什么 SQL 语法 数据库表 SQL 语句 注意事项 SQL 语句后面的分号 一些最重要的 SQL 命令 SQL SELECT 语句 SQL SELECT 语句 演示数据库 SELECT Column 实例 SELECT * 实例 SQL SELECT DISTINCT 语句 SQL SELECT DISTINCT 语句…

【工具使用-Everything】everything只能搜到文件夹,无法搜到文件

一&#xff0c;问题现象 everything搜索时&#xff0c;只能搜索到文件夹&#xff0c;无法搜索到文件夹下的文件。 二&#xff0c;问题原因 everything搜索设置问题&#xff0c;设置为"文件夹"导致 三&#xff0c;解决方法 将搜索选项设置为“所有”即可&#x…

5 新增课程

5.1 需求分析 5.1.1 业务流程 根据前边对内容管理模块的数据模型分析&#xff0c;课程相关的信息有&#xff1a;课程基本信息、课程营销信息、课程图片信息、课程计划、课程师资信息&#xff0c;所以新增一门课程需要完成这几部分信息的填写。 以下是业务流程&#xff1a; …

全链路压测:提升业务可靠性和可用性

全链路压测是一种全面评估系统性能和稳定性的测试方法&#xff0c;通过模拟真实用户场景和流程来验证整个应用系统在高负载情况下的表现。全链路压测的主要作用涵盖了多个方面&#xff1a; 性能评估与优化&#xff1a; 全链路压测可以全面评估系统在高负载下的性能表现&#xf…

代码评审——随机数Random问题

问题描述&#xff1a; 为了获取唯一值&#xff0c;经常会依赖产生随机数来保证唯一性。在获取随机数时&#xff0c;如果使用错误的方法&#xff0c;会比较低效。 可以参考以下代码&#xff1a; public static String geneRundomNo(){Random rnew Random();int numr.nextInt(…

day31_CSS

今日内容 CSS概述引入方式 (where)选择器(how)属性(how) 1 CSS介绍 层叠样式表&#xff08;cascading style sheet&#xff09; CSS 用来美化HTML页面,可以让页面更好看,还可以布局页面. 好处 美化页面,布局页面使用外部css文件,可以实现样式文件和html文件分离,便于维护使用外…

再学jQuery

添加链接描述 jQuery源码采用模块化的设计&#xff0c;将不同功能的代码模块化&#xff0c;并通过jQuery.fn扩展原型链&#xff0c;使得可以灵活地使用各种功能和方法。这样的设计使得代码结构清晰&#xff0c;易于维护和扩展。jQuery源码中考虑了跨浏览器兼容性&#xff0c;通…

苹果眼镜(Vision Pro)的开发者指南(1)

一、用到的底层核心框架: SwiftUI:无论开发者是要创建窗口、体积还是空间体验,SwiftUI 都是构建新的 visionOS 应用程序或将现有 iPadOS 或 iOS 应用程序引入平台的最佳方式。凭借全新的 3D 功能以及对深度、手势、效果和沉浸式场景类型的支持,SwiftUI 可以帮助你为 Vision…

5.ROC-AUC机器学习模型性能的常用的评估指标

最近回顾机器学习基础知识部分的时候&#xff0c;看到了用于评估机器学习模型性能的ROC曲线。再次记录一下&#xff0c;想起之前学习的时候的茫然&#xff0c;希望这次可以更加清晰的了解这一指标。上课的时候听老师提起过&#xff0c;当时没有认真去看&#xff0c;所以这次可以…

SpeechGPT-Gen;使用Agents编辑图像;多模态扩散模型图像生成

本文首发于公众号&#xff1a;机器感知 SpeechGPT-Gen&#xff1b;使用Agents编辑图像&#xff1b;多模态扩散模型图像生成&#xff1b; CCA: Collaborative Competitive Agents for Image Editing This paper presents a novel generative model, Collaborative Competitive…

多流转换 (分流,合流,基于时间的合流——双流联结 )

目录 一&#xff0c;分流 1.实现分流 2.使用侧输出流 二&#xff0c;合流 1&#xff0c;联合 2&#xff0c;连接 三&#xff0c;基于时间的合流——双流联结 1&#xff0c;窗口联结 1.1 窗口联结的调用 1.2 窗口联结的处理流程 2&#xff0c;间隔联结 2.1 间隔联…

<网络安全>《2 国内主要企业网络安全公司概览(二)》

4 北京天融信科技有限公司(简称天融信) 信息内容LOGO成立日期创始于1995年总部北京市海淀区上地东路1号院3号楼北侧301室背景民营企业是否上市天融信[002212]A股市值99亿主要产品网络安全大数据云服务员工规模6000多人简介天融信科技集团&#xff08;证券代码&#xff1a;0022…

# Java NIO(一)FileChannel

Java NIO 1.BIO与NIO的区别 BIO为阻塞IO&#xff0c;NIO为非阻塞IO。 BIONIOJAVA1.4之前Java 1.4之后面向流&#xff1a;以byte为单位处理数据面向块&#xff1a;以块为单位处理数据同步阻塞同步非阻塞无选择器&#xff08;Selector&#xff09; 1.1NIO的核心组成部分 Cha…

书生·浦语大模型实战营-学习笔记6

目录 OpenCompass大模型测评1. 关于评测1.1 为什么要评测&#xff1f;1.2 需要评测什么&#xff1f;1.3 如何评测&#xff1f;1.3.1 客观评测1.3.2 主观评测1.3.3 提示词工程评测 2. 介绍OpenCompass工具3. 实战演示 OpenCompass大模型测评 1. 关于评测 1.1 为什么要评测&#…

人工智能系列 :与机器共生的未来

大家好&#xff0c;身处一个日新月异的时代&#xff0c;科技的浪潮汹涌而至&#xff0c;将人们推向未知的前方&#xff0c;一个充满人工智能与机器的世界。 这个未知的境地&#xff0c;或许令人心生恐慌&#xff0c;因为它的庞大未知性仿佛一团迷雾&#xff0c;模糊了大家的视…

Unity Mask合批情况验证

1.首先是两个Mask完全重合的情况下 每张图片使用的image都来自同一个图集 发现彼此之间是没有合批的&#xff0c;但是每个Mask内部是实现了合批的 经过计算此种情况的visiableList&#xff1a;mask1&#xff0c;IM1&#xff0c;IM2&#xff0c;mask2&#xff0c;IM3&#xf…

Docker安装Clickhouse详细教程

简介 ClickHouse是一种列式数据库管理系统&#xff0c;专门用于高性能数据分析和数据仓库应用。它是一个开源的数据库系统&#xff0c;最初由俄罗斯搜索引擎公司Yandex开发&#xff0c;用于满足大规模数据分析和报告的需求。 特点 开源的列式存储数据库管理系统&#xff0c;…

ruoyi-vue项目中当使用request.js请求后他时,返回非200状态码时request.js会抛出控制台异常导致后续逻辑不执行的解决办法

背景&#xff1a;因表单提交后台逻辑较多&#xff0c;执行速度超过3秒所以提交时添加了遮罩加载层&#xff0c;当后台返回非200状态码时request.js会抛出控制台异常导致后续逻辑不执行了&#xff0c;使用try-cat.catch捕获异常也无效&#xff0c;因为request.js会优先拦截处理 …

不学前沿技术与朽木浮草何异 ?Java18新特性

不学前沿技术与朽木浮草何异 &#xff1f;Java18新特性 文章目录 不学前沿技术与朽木浮草何异 &#xff1f;Java18新特性JEP 400:默认字符集为 UTF-8JEP 408:简易的 Web 服务器JEP 413:优化 Java API 文档中的代码片段JEP 416:使用方法句柄重新实现反射核心JEP 417: 向量 API&a…

06.搭建一个自己的私有仓库-Gitea

06.搭建一个自己的私有仓库-Gitea | DLLCNX的博客 如果你是一位程序员或者IT相关领域的从业者&#xff0c;那么肯定知道git&#xff0c;而且也或多或少接触了不少开源仓库以及公司的私有仓库&#xff0c;但是我们有没有想过自己也搭建一个私有仓库呢。 这么多开源仓库&#xf…