Bugcat DevOps Tool —— 面向小微企业研发团队的一站式 DevOps 研发运维管理平台
cat-bcdt(Bugcat DevOps Tool) 是专为小微企业研发团队打造的一站式私有化DevOps运维管理平台。针对中小团队预算有限、人员少、不想维护多套重型中间件的现状,聚焦数据库运维管控、CI/CD流水线对接、线上日志查阅、团队研发协作等日常高频场景。同时,项目内置的cat-bcdt-core核心框架,可独立剥离使用,帮助开发者快速搭建新项目,大幅提升项目初始化与开发效率。
✅ 架构特性:前后端分离
-
后端:Spring Boot 4 多模块 Maven 工程,内置自研协议驱动开发框架,封装大量通用能力,简化业务开发;
-
前端:Vue3 + Element Plus 单页应用;
-
无缝复用禅道账号体系:直接对接禅道数据库,复用现有账号、密码与权限,无需独立开发用户登录、权限模块,大幅降低接入成本。
项目定位:轻量化私有化部署工具,贴合国内中小团队工作流程,解决数据库操作风险、日志排查繁琐、研发协同碎片化等实际痛点。
-
🛡️ 数据库安全管控:SQL变更版本留痕、权限申请审批、SQL审计、临时账号安全隔离,减少人为误操作带来的数据风险;
-
⚡ 降低团队运维负担:把日志检索、数据库代理、CI联动、团队协作能力整合在一套系统,无需部署多款第三方重型工具;
-
🤝 打通现有研发工具链:对接禅道、Gitea、GitLab、Jenkins,复用已有系统,避免业务割裂;
-
🚀 提升开发效率:内置数据表代码生成器、数据库字段自动加解密、标准化提测模板,减少重复手工工作;
-
📈 流程可追溯:数据库操作、审批记录、SQL审计日志全部持久化留存,便于事后排查复盘。
-
🗄️ 数据库运维管理:SQL脚本版本管控、定时SQL计划任务、数据库账号权限申请审批流程;
-
🔐 MySQL TCP代理服务:MySQL5.7 协议层代理转发、全量SQL审计、读写分离、临时账号安全隔离;
-
🧩 代码自动生成:基于数据表结构一键生成实体、Mapper、Service等业务层代码,模板支持自定义;
-
📜 独立日志查阅服务:支持GB级日志在线检索、实时模拟
tail-f、OOM Heapdump异常钉钉告警; -
🔗 第三方系统联动:对接Gitea / GitLab / Jenkins / 禅道 WebHook,实现事件联动、消息推送;
-
👥 团队研发协作:个人&团队日报工时统计、任务看板、消息待办通知、标准化提测邮件模板。
| 分类 | 组件 | 版本 |
|---|---|---|
| 运行环境 | Java | 25 |
| 应用框架 | Spring Boot | 4.0.5 |
| ORM框架 | MyBatis-Plus(spring-boot4-starter) | 3.5.16 |
| 数据库驱动 | MariaDB Java Client | 3.5.8 |
| 连接池 | HikariCP | 7.0.2 |
| 网络代理 | Vert.x Core | 4.5.29 |
| API文档 | knife4j OpenAPI3 Jakarta | 4.5.0 |
| API文档 | springdoc-openapi | 3.1.0 |
| 模板引擎 | FreeMarker | - |
| 内置组件 | Spring WebSocket / Mail / AOP / Validation | - |
| 分类 | 技术 | 版本 |
|---|---|---|
| 核心框架 | Vue | 3.5.x |
| 路由 | Vue Router | 4.5.x |
| 状态管理 | Pinia | 3.0.x |
| UI组件库 | Element Plus | 2.10.x |
| 构建工具 | Vite | 7.0.x |
| Node版本 | Node.js | ^20.19.0 || >=22.12.0 |
多模块Maven项目,整体分为核心框架、业务平台、独立日志服务、前端四大部分。
cat-bcdt-manage/
├── cat-bcdt/ # 聚合构建模块(cc.bugcat:cat-bcdt)
│ ├── cat-bcdt-ops/ # 业务核心:运维管理平台(端口 11010)
│ ├── cat-bcdt-logsev/ # 独立日志检索服务(端口 18232)
│ └── docs/ # 项目文档与截图
│
├── cat-bcdt-core/ # 自研快速开发框架(cc.bugcat.bcdt:cat-bcdt-core)
│ ├── boot-parent/ # 父 POM,统一依赖版本
│ ├── boot-common/ # 核心公共类、工具类、SPI 扩展点
│ ├── boot-webmvc/ # 协议驱动 WebMVC 框架
│ ├── boot-webflux/ # 响应式 WebFlux 框架
│ ├── boot-mybatis/ # MyBatis 扩展(JDK 二次代理、字段加解密)
│ ├── boot-mybatis-log/ # MyBatis SQL 打印优化
│ ├── boot-mariadb/ # MariaDB 驱动封装
│ ├── boot-icache/ # 单机缓存管理
│ ├── boot-gener/ # 代码生成工具(FreeMarker 模板)
│ ├── boot-utils-sm/ # 国密 SM 工具
│ ├── boot-utils-freemarker/ # FreeMarker 工具封装
│ └── boot-utils-http/ # HTTP 工具封装
│
└── cat-bcdt-web/ # Vue 3 前端(开发端口 11022)
协议驱动开发框架,通过boot-parent统一管控全部依赖版本,业务模块按需引入子组件。
| 模块 | 能力简述 |
|---|---|
| boot-common | springboot扩展、基础工具类、全局常量、SPI扩展点、统一异常处理、JSON字段自动脱敏、线程池 |
| boot-webmvc | Controller/Service切面、接口鉴权、全局异常、API日志,协议驱动主体实现 |
| boot-webflux | WebFlux封装,面向IO密集型场景(日志检索服务使用)、独立的websocket服务 |
| boot-mybatis | Mapper类二次JDK代理,支持AOP扩展;数据库字段自动加解密 |
| boot-mybatis-log | 控制台输出携带完整参数、可直接执行的SQL,提升调试效率 |
| boot-icache | 单机内存缓存 |
| boot-gener | 根据数据表结构一键生成实体、Mapper、Service代码;代码模板支持自定义修改 |
| boot-mariadb | MariaDB数据源自动配置封装 |
| boot-utils-* | 国密SM、FreeMarker、HTTP请求等通用工具包 |
主业务系统,启动类:
cc.bugcat.bcdt.ops.BcdtOpsApplication,默认端口:11010
-
网址导航管理:维护团队内部常用系统链接,提供统一内部导航页面;
-
数据库连接管理:统一维护多数据源配置,为SQL执行、字段加解密、代码生成提供数据源支撑;
-
SQL版本管理:按日期归档管理SQL脚本,实现数据库变更记录留存、变更追溯;
-
数据库计划任务:定时自动执行SQL脚本,适合夜间低峰执行大事务SQL,避开业务高峰;
-
数据库字段加解密:配合注解
@Encrys,提供可视化操作页面,支持加密字段查看与修改; -
MySQL5.7 TCP数据库代理(核心模块) (目前只支持 MySQL5.7 及以下版本代理)
- 基于Vert.x实现TCP层MySQL协议代理,双向转发数据包;
- 支持读写账号、只读账号、DBA账号配置,完成读写分离与权限隔离;
- 申请-审批流程:开发提交访问申请,审批通过自动生成临时MySQL子账号;
- SQL全量审计:JDBC、Navicat等任意客户端访问,均解析协议记录SQL语句、执行耗时;空闲1小时自动断开连接;所有操作持久化可溯源;
- 安全防护:数据库真实IP、账号密码开发者完全不可见;临时账号可根据需求设置变动频率。
-
数据库权限申请审批
环节 接口地址 说明 提交申请 /auth/code/apply用户提交数据库访问授权码申请 管理员审批 - 后台审核操作 审批通过下发 /auth/code/adopt审批通过生成有效授权码 授权码校验 /auth/code/valid校验授权码有效性 查询个人账号信息 /auth/code/info查询自己授权账号详情 -
CI/CD系统集成
- Jenkins:批量维护项目分支;接收WebHook构建事件,推送钉钉通知;
- Gitea / GitLab:接收push、MR事件,触发Jenkins构建;检测高危文件提交;支持模拟SSO单点登录;
- 禅道对接:复用禅道账号库;查询任务列表;接收禅道WebHook同步推送任务状态变更。
- 团队协作能力
- 日报系统:个人日报填写,关联禅道任务/Bug工时统计;支持团队日报汇总、管理看板;
- 消息&待办:统一消息通知中心;
- 提测邮件模板:标准化提测邮件,降低研发与测试沟通成本。
独立解耦日志服务,避免大文件读取拖慢主业务平台;启动类:
cc.bugcat.bcdt.logsev.BcdtLogsevApplication;基于WebFlux,默认端口 18232
核心能力:
-
GB级日志文件分页读取:采用文件随机行定位算法,无需加载完整日志文件;
-
关键词检索,搜索结果高亮,支持分页上下翻页;
-
WebSocket实时tail-f,模拟
tail -f实时查看日志新增输出; -
多应用、多实例日志目录配置管理;
-
Heapdump文件监听:检测OOM dump文件生成,触发钉钉告警通知。
Vue3 + Vite7 SPA单页应用
- 构建输出目录:
../webdist/dist,部署base路径/web/
主要页面目录映射
| views目录 | 模块功能 |
|---|---|
| links | 网址导航管理 |
| dbset | 数据库连接配置 |
| dbsql | SQL版本管理 |
| dbtask | SQL定时计划任务 |
| dbcoder | 数据库字段加解密工具 |
| dbproxy | MySQL数据库代理管理 |
| dbauth | 数据库权限申请审批 |
| jenkins | Jenkins集成配置 |
| note | 日报、团队统计看板 |
| chat | 消息待办通知 |
| 提测邮件模板 | |
| logger | 日志检索查看 |
| user | 用户中心 |
| login | 登录页面 |
- JDK 25+
- Maven 3.6+
- Node.js
^20.19.0 || >=22.12.0 - MariaDB / MySQL(复用禅道数据库,若无禅道环境需要手动导入禅道库结构)
- 克隆代码,在IDE中选择cat-bcdt/pom.xml,使用Maven完成依赖下载;
- 修改对应环境配置文件,配置数据库连接、禅道地址等参数;
- 启动主业务平台
BcdtOpsApplication;- 按需独立启动日志服务
BcdtLogsevApplication。
- 进入
cat-bcdt-web目录执行npm install安装依赖;- 执行启动命令运行开发服务;
- 开发服务器启动完成后访问:
http://localhost:11022/web/
项目采用 Properties 格式配置文件,支持多环境切换(local / prod)。
主配置文件:src/main/resources/application.properties
| 配置项 | 默认值 | 说明 |
|---|---|---|
spring.profiles.active |
local | 激活的环境配置 |
cross.domain.enabled |
true | 是否允许跨域 |
环境配置文件:src/main/resources/config/application-{env}.properties
| 配置项 | 说明 |
|---|---|
spring.datasource.url |
数据源地址(默认连接禅道库 zentao) |
spring.datasource.username |
数据库用户名 |
spring.datasource.password |
数据库密码 |
spring.datasource.hikari.* |
HikariCP 连接池参数 |
zentao.web-host |
禅道网页访问地址 |
bcdt.web-host |
bcdt 后台服务访问地址 |
mybatis.sql.show |
是否打印完整SQL |
scheduled.enabled |
是否开启定时任务 |
主配置文件:src/main/resources/application.properties
| 配置项 | 默认值 | 说明 |
|---|---|---|
server.port |
18232 | 服务端口 |
inner-cache.serializable |
false | 缓存序列化开关 |
cross.domain.enabled |
true | 是否允许跨域 |
环境配置文件:src/main/resources/config/application-{env}.properties
| 配置项 | 说明 |
|---|---|
app.bcdt-path |
办公平台地址(用于服务回调) |
logger.config |
日志文件路径配置(JSON数组,指定应用名、目录、标签) |
heap-dump.dir-path |
Heapdump 文件监听目录 |
heap-dump.listen-enable |
是否开启 heapdump 文件监听 |
heap-dump.ding-token |
OOM内存溢出告警钉钉群机器人Token |
-
分离打包策略:通过
maven-dependency-plugin把第三方依赖输出到target/lib,自研模块输出到target/applib;业务jar不内嵌依赖,方便生产环境增量更新; -
最终产物:业务jar包 +
lib/目录 +applib/目录;使用java -jar配合-Dloader.path参数完成启动。
启动命令:nohup java -jar -Dloader.path=lib,applib cat-bcdt-ops*.jar
构建产物输出目录:../webdist/dist,可交由Nginx托管,也可集成到后端静态资源服务。
项目集成 knife4j + springdoc-openapi,服务启动后访问地址:
- Knife4j UI:
http://localhost:11010/doc.html - OpenAPI JSON:
http://localhost:11010/v3/api-docs
推荐一款浏览器插件,面向后端开发者高效调试API接口的浏览器插件,专为本地联调、接口替换、线上问题复现场景设计,大幅提升开发与调试效率!
插件详细介绍请戳这里 没错,我就是为了这碟醋,包的这盘饺子
编写中...
编写中...
编写中...
编写中...
- 项目完全免费,支持个人、企业免费商用,无使用费用;
- 允许任意二次开发、修改、部署、自用;
- 禁止行为:禁止将本项目原版、仅轻微修改的功能,单独作为商品售卖、收费授权、出租牟利;
- 完全放开:经过深度二次开发、重构后的衍生项目,可随意闭源、售卖、商用,无任何限制;
- 使用时仅需保留原版权声明即可。