| .. | ||
| .cursor/rules | ||
| .mvn/wrapper | ||
| docs | ||
| rules | ||
| src | ||
| .cursorrules | ||
| .cursorrules1 | ||
| .gitattributes | ||
| .gitignore | ||
| .windsurfrules | ||
| frontend.rules | ||
| mvnw | ||
| mvnw.cmd | ||
| pom.xml | ||
| readme1.md | ||
| README.md | ||
Deploy Ease Platform
Deploy Ease Platform 是一个基于Spring Boot 3.x和Flowable 7.x的现代化部署管理平台,提供工作流驱动的自动化部署解决方案。
技术栈
后端
- Java 21 + Spring Boot 3.2.0
- Spring Security 6.2.0 + JWT认证
- Spring Data JPA + Hibernate
- Flowable 7.2.0 - 工作流引擎
- MySQL 8.0+ + Flyway数据库版本控制
- MapStruct 1.5.5 - 对象映射
- QueryDSL 5.0.0 - 类型安全查询
- OpenAPI/Swagger - API文档
- Lombok - 代码简化
- Hutool - 工具类库
构建工具
- Maven 3.8+
核心功能模块
✅ 1. 系统管理(已完成)
1.1 用户管理
- 用户注册和登录
- JWT Token认证
- 密码重置
- 用户信息维护
- 用户状态管理(启用/禁用)
- 部门分配
- 基础CRUD操作(分页查询、创建、更新、删除)
主要接口:
POST /api/v1/user/login - 用户登录
GET /api/v1/user/current - 获取当前用户信息
POST /api/v1/user/{id}/reset-password - 重置密码
PUT /api/v1/user/{id}/department - 分配部门
1.2 角色管理
- 角色创建与维护
- 角色标签管理
- 角色权限分配
- 用户角色分配
- 角色权限查询
主要接口:
POST /api/v1/role - 创建角色
POST /api/v1/role/{id}/tags - 分配标签
POST /api/v1/role/{userId}/assignRoles - 分配角色
GET /api/v1/role/{id}/permissions - 获取角色权限
POST /api/v1/role/{id}/permissions - 分配权限
1.3 权限管理
- 权限创建与维护
- 权限分类管理(菜单权限、按钮权限)
- 权限与菜单关联
- 基于权限的访问控制
1.4 菜单管理
- 菜单树维护
- 菜单排序
- 菜单显示控制
- 动态菜单加载
- 菜单权限配置
- 权限树查询
主要接口:
GET /api/v1/menu/current - 获取当前用户菜单
GET /api/v1/menu/tree - 获取菜单树
GET /api/v1/menu/permission-tree - 获取权限树
1.5 部门管理
- 部门树形结构维护
- 部门编码管理
- 部门负责人设置
- 部门人员管理
- 部门排序
1.6 租户管理
- 多租户支持
- 租户信息管理
- 租户状态控制
实体统计: 9个核心实体
- User(用户)
- Role(角色)
- RoleTag(角色标签)
- Permission(权限)
- PermissionTemplate(权限模板)
- Menu(菜单)
- Department(部门)
- Tenant(租户)
- SysParam(系统参数)
✅ 2. 外部系统集成(已完成)
2.1 外部系统管理
- 外部系统统一管理(Jenkins、Git等)
- 多种认证方式支持
- 用户名密码认证
- Token认证
- SSH密钥认证
- 连接测试
- 同步状态追踪
主要接口:
POST /api/v1/external-system - 创建外部系统
GET /api/v1/external-system/{id}/test-connection - 测试连接
POST /api/v1/external-system/{id}/sync - 同步数据
GET /api/v1/external-system/{id}/status - 获取同步状态
2.2 Jenkins集成
- Jenkins实例管理
- 视图(View)同步
- 任务(Job)同步
- 构建(Build)信息同步
- 构建历史记录
- 同步历史追踪
主要接口:
POST /api/v1/jenkins-manager/{externalSystemId}/sync-all - 同步所有数据
POST /api/v1/jenkins-manager/{externalSystemId}/sync-views - 同步视图
POST /api/v1/jenkins-manager/{externalSystemId}/sync-jobs - 同步任务
POST /api/v1/jenkins-manager/{externalSystemId}/sync-builds - 同步构建
GET /api/v1/jenkins-manager/{externalSystemId}/instance - 获取实例信息
相关实体:
- JenkinsView(Jenkins视图)
- JenkinsJob(Jenkins任务)
- JenkinsBuild(Jenkins构建)
- JenkinsSyncHistory(同步历史)
2.3 Git仓库集成
- Git仓库组(Group)管理
- Git项目(Project)管理
- Git分支(Branch)管理
- 多级同步(组 → 项目 → 分支)
- 同步历史记录
主要接口:
POST /api/v1/repository-manager/{externalSystemId}/sync-groups - 同步仓库组
POST /api/v1/repository-manager/{externalSystemId}/groups/sync-projects - 同步项目
POST /api/v1/repository-manager/{externalSystemId}/projects/sync-branches - 同步分支
GET /api/v1/repository-manager/{externalSystemId}/instance - 获取实例信息
相关实体:
- RepositoryGroup(仓库组)
- RepositoryProject(仓库项目)
- RepositoryBranch(仓库分支)
- RepositorySyncHistory(同步历史)
✅ 3. 部署管理(已完成)
3.1 应用管理
- 应用创建与维护
- 应用编码管理
- 开发语言类型支持(Java、Python、Node.js等)
- 应用与仓库关联
- 应用分组管理
主要接口:
POST /api/v1/applications - 创建应用
GET /api/v1/applications/development-languages - 获取开发语言列表
相关实体:
- Application(应用)
- ProjectGroup(项目组)
3.2 环境管理
- 环境配置管理(开发、测试、生产等)
- 环境编码管理
- 构建类型配置(Jenkins、GitLab Runner、GitHub Action)
- 部署方式配置(K8S、Docker、VM)
- 项目组与环境关联
相关实体:
- Environment(环境)
3.3 部署配置
- 应用部署配置管理
- 构建配置Schema定义
- 部署操作
- 部署日志记录
主要接口:
POST /api/v1/deploy-app-config - 创建部署配置
GET /api/v1/deploy-app-config/defined - 获取构建类型Schema
POST /api/v1/deploy-app-config/deploy - 执行部署
相关实体:
- DeployAppConfig(部署配置)
- DeployLog(部署日志)
✅ 4. 工作流引擎(已完成,基于Flowable)
4.1 工作流定义
- 工作流设计和保存
- 工作流发布管理
- 工作流启用/禁用
- 工作流状态管理(草稿、已发布、已禁用)
- 图形化配置(GraphJSON)
- BPMN XML自动生成
- 工作流分类管理
主要接口:
POST /api/v1/workflow/definition/design - 保存工作流设计
GET /api/v1/workflow/definition/published - 查询已发布工作流
POST /api/v1/workflow/definition/{id}/published - 发布工作流
POST /api/v1/workflow/definition/{id}/disable - 禁用工作流
POST /api/v1/workflow/definition/{id}/enable - 启用工作流
GET /api/v1/workflow/definition/categories - 获取工作流分类
4.2 工作流实例
- 工作流实例启动
- 工作流实例挂起
- 工作流实例恢复
- 工作流执行状态查询
- 历史实例查询
- 实例与模板关联查询
主要接口:
POST /api/v1/workflow/instance/start - 启动工作流
GET /api/v1/workflow/instance/templates-with-instances - 查询模板及实例
GET /api/v1/workflow/instance/historical-instances - 查询历史实例
POST /api/v1/workflow/definition/{processInstanceId}/suspend - 挂起实例
POST /api/v1/workflow/definition/{processInstanceId}/resume - 恢复实例
4.3 节点定义与执行
- 节点类型管理
- 节点配置Schema
- 节点实例状态追踪
- 节点重试机制
- 节点跳过机制
主要接口:
POST /api/v1/workflow/node-instance/{id}/retry - 重试节点
POST /api/v1/workflow/node-instance/{id}/skip - 跳过节点
4.4 节点类型实现(Delegate)
- ShellNodeDelegate - Shell脚本执行
- DeployNodeDelegate - 部署节点执行
- ApprovalNodeDelegate - 审批节点
- NotificationNodeDelegate - 通知节点
- BaseNodeDelegate - 基础节点抽象
4.5 工作流日志
- 实时日志记录
- 节点级日志
- 日志查询
相关实体:
- WorkflowDefinition(工作流定义)
- WorkflowNodeDefinition(节点定义)
- WorkflowInstance(工作流实例)
- WorkflowNodeInstance(节点实例)
- WorkflowLog(工作流日志)
✅ 5. 基础框架(已完成)
5.1 通用CRUD框架
- BaseController - 统一REST控制器
- BaseServiceImpl - 通用服务实现
- IBaseRepository - 通用数据访问接口
- BaseConverter - 对象转换抽象
- 统一响应格式(Response)
- 统一分页格式(Page)
标准CRUD接口(所有Controller继承):
POST /{resource} - 创建
PUT /{resource}/{id} - 更新
DELETE /{resource}/{id} - 删除
GET /{resource}/{id} - 查询详情
GET /{resource} - 查询列表
GET /{resource}/page - 分页查询
GET /{resource}/list - 条件查询
POST /{resource}/batch - 批量处理
GET /{resource}/export - 导出数据
5.2 查询框架
- 基于QueryDSL的类型安全查询
- 动态查询条件构建
- @QueryField注解支持
- 多种查询类型(EQUAL、LIKE、BETWEEN、IN等)
- 软删除查询支持
5.3 安全框架
- Spring Security集成
- JWT Token认证
- 权限拦截器
- 自定义认证入口点
- JWT过滤器
5.4 审计框架
- 审计注解(@Audited)
- 自动记录创建人/创建时间
- 自动记录更新人/更新时间
- 乐观锁版本控制
- 审计事件监听
5.5 异常处理
- 统一异常处理(GlobalExceptionHandler)
- 业务异常(BusinessException)
- 系统异常(SystemException)
- 唯一约束异常(UniqueConstraintException)
- 实体未找到异常(EntityNotFoundException)
- 国际化错误消息
5.6 数据库版本控制
- Flyway集成
- 表结构版本管理(V1.0.0__init_schema.sql)
- 初始数据管理(V1.0.1__init_data.sql)
- 28个数据库表
5.7 其他框架功能
- 国际化支持(i18n)
- JSON序列化配置
- 租户过滤器
- 逻辑删除支持(@LogicDelete)
- 依赖注入后处理器
- Formily Schema生成(用于前端表单)
数据库表结构(28张表)
系统管理表(7张)
sys_tenant- 租户表sys_department- 部门表sys_user- 用户表sys_param- 系统参数表sys_role- 角色表sys_role_tag- 角色标签表sys_menu- 菜单表
权限管理表(5张)
sys_role_tag_relation- 角色标签关系表sys_user_role- 用户角色关系表sys_role_menu- 角色菜单关系表sys_permission_template- 权限模板表sys_template_menu- 模板菜单关系表sys_permission- 权限表
外部系统表(1张)
sys_external_system- 外部系统表
Git仓库表(3张)
deploy_repo_group- 仓库组表deploy_repo_project- 仓库项目表deploy_repo_branch- 仓库分支表
Jenkins表(4张)
- Jenkins相关表(通过代码推断,未在SQL中完整展示)
工作流表(5张)
workflow_definition- 工作流定义表workflow_node_definition- 节点定义表workflow_instance- 工作流实例表workflow_node_instance- 节点实例表workflow_log- 工作流日志表
部署管理表(6张)
deploy_project_group- 项目组表deploy_application- 应用表deploy_environment- 环境表deploy_project_group_environment- 项目组环境关系表deploy_log- 部署日志表deploy_app_config- 应用部署配置表
API接口统计
Controller统计(26个)
系统管理(7个):
- UserApiController
- RoleApiController
- RoleTagApiController
- PermissionApiController
- MenuApiController
- DepartmentApiController
- TenantApiController
部署管理(8个):
- ApplicationApiController
- ProjectGroupApiController
- EnvironmentApiController
- DeployAppConfigApiController
- DeployLogApiController
- ExternalSystemApiController
- RepositoryManagerApiController
- RepositoryProjectApiController
- RepositoryGroupApiController
- RepositoryBranchApiController
Jenkins管理(5个):
- JenkinsManagerApiController
- JenkinsViewApiController
- JenkinsJobApiController
- JenkinsBuildApiController
- JenkinsSyncHistoryApiController
工作流管理(4个):
- WorkflowDefinitionApiController
- WorkflowNodeDefinitionApiController
- WorkflowInstanceApiController
- WorkflowNodeInstanceApiController
接口方法统计:
- 约49个自定义@Operation接口方法
- 每个Controller继承BaseController,获得9个标准CRUD方法
- 总计约280+个API接口
🚧 待完善功能
1. 测试覆盖
- Service层单元测试
- Controller层集成测试
- Repository层数据访问测试
- 工作流引擎测试
- 当前测试覆盖率:约1%(仅1个测试类)
2. 缓存机制
- Redis集成
- 工作流定义缓存
- 权限数据缓存
- 菜单数据缓存
- 当前状态:已引入Caffeine依赖,但未使用
3. 监控和运维
- 健康检查端点完善
- 性能监控(APM)集成
- 日志聚合(ELK)
- 告警机制
- 链路追踪
4. 部署和DevOps
- Docker镜像构建
- Kubernetes部署配置
- CI/CD Pipeline
- 环境配置分离(dev/test/prod)
- 当前配置:application.yml包含硬编码数据库密码和JWT密钥
5. 文档完善
- API文档完善(Swagger注释)
- 架构图和流程图
- 部署手册
- 运维手册
- 最佳实践指南
6. 代码质量
- 代码质量检查工具集成(Checkstyle、PMD、SonarQube)
- TODO注释处理(14处待处理)
- System.out.println清理(14处)
- 泛化异常处理优化(95处catch Exception)
7. 安全加固
- 敏感配置外部化
- JWT密钥加密存储
- 数据库连接加密
- API访问频率限制
- SQL注入防护验证
- XSS攻击防护
8. 性能优化
- 数据库索引优化
- N+1查询问题排查
- 连接池配置优化(当前仅10个)
- 大数据量分页优化
- 异步任务处理
快速开始
环境要求
- JDK 21+
- Maven 3.8+
- MySQL 8.0+
- Node.js 16+(前端)
1. 数据库准备
CREATE DATABASE `deploy-ease-platform`
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
2. 配置修改
编辑 src/main/resources/application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/deploy-ease-platform?...
username: your_username
password: your_password
jwt:
secret: 'your_secret_key' # 建议使用环境变量
⚠️ 安全提示: 生产环境请使用环境变量或配置中心管理敏感信息!
3. 启动项目
# 编译项目
mvn clean package -DskipTests
# 启动服务
mvn spring-boot:run
# 或直接运行
java -jar target/deploy-cd-1.0-SNAPSHOT.jar
4. 访问服务
5. 默认用户(需通过初始化SQL配置)
用户名:admin
密码:(请查看V1.0.1__init_data.sql)
项目规范
代码规范
详见项目根目录下的规范文件:
.cursor/rules/project.mdc- 完整开发规范frontend.rules- 前端开发规范
核心规范要点
包结构
com.qqchen.deploy.backend
├── framework/ # 框架核心
│ ├── annotation/ # 注解定义
│ ├── controller/ # 基础控制器
│ ├── service/ # 基础服务
│ ├── repository/ # 基础仓库
│ └── ...
├── system/ # 系统模块
│ ├── api/ # REST接口
│ ├── entity/ # 实体类
│ ├── service/ # 业务服务
│ └── ...
├── deploy/ # 部署模块
└── workflow/ # 工作流模块
命名规范
- Entity: 名词,如User、Role
- DTO: 实体名+DTO,如UserDTO
- Service接口: I+实体名+Service,如IUserService
- Service实现: 实体名+ServiceImpl,如UserServiceImpl
- Controller: 实体名+ApiController,如UserApiController
- Repository: I+实体名+Repository,如IUserRepository
注解使用
- @ServiceType(DATABASE) - 数据库服务
- @ServiceType(INTEGRATION) - 集成服务(禁用数据库操作)
- @LogicDelete - 启用逻辑删除
- @Audited - 启用审计
- @QueryField - 查询字段映射
贡献指南
提交规范
feat: 新功能
fix: Bug修复
docs: 文档更新
style: 代码格式调整
refactor: 重构
perf: 性能优化
test: 测试相关
chore: 构建/工具变动
分支管理
master- 生产环境分支develop- 开发分支feature/*- 功能分支bugfix/*- Bug修复分支hotfix/*- 热修复分支
许可证
MIT License
联系方式
项目维护者:Deploy Ease Team
更新日志
v1.0.0(当前版本)
- ✅ 完成系统管理核心功能
- ✅ 完成Jenkins和Git集成
- ✅ 完成工作流引擎基础功能
- ✅ 完成部署管理框架
- ✅ 完成28张数据库表设计
- ✅ 完成280+个API接口
- ⚠️ 测试覆盖率待提升
- ⚠️ 缓存机制待实现
- ⚠️ 生产环境配置待优化
注意事项:
- 本项目处于开发阶段,部分功能仍在完善中
- 生产环境使用前请务必完成安全加固
- 建议补充完整的单元测试和集成测试
- 数据库配置和JWT密钥需要外部化管理
- 建议集成专业的日志分析和监控方案