# 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 用户管理 - [x] 用户注册和登录 - [x] JWT Token认证 - [x] 密码重置 - [x] 用户信息维护 - [x] 用户状态管理(启用/禁用) - [x] 部门分配 - [x] 基础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 角色管理 - [x] 角色创建与维护 - [x] 角色标签管理 - [x] 角色权限分配 - [x] 用户角色分配 - [x] 角色权限查询 **主要接口:** ``` 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 权限管理 - [x] 权限创建与维护 - [x] 权限分类管理(菜单权限、按钮权限) - [x] 权限与菜单关联 - [x] 基于权限的访问控制 #### 1.4 菜单管理 - [x] 菜单树维护 - [x] 菜单排序 - [x] 菜单显示控制 - [x] 动态菜单加载 - [x] 菜单权限配置 - [x] 权限树查询 **主要接口:** ``` GET /api/v1/menu/current - 获取当前用户菜单 GET /api/v1/menu/tree - 获取菜单树 GET /api/v1/menu/permission-tree - 获取权限树 ``` #### 1.5 部门管理 - [x] 部门树形结构维护 - [x] 部门编码管理 - [x] 部门负责人设置 - [x] 部门人员管理 - [x] 部门排序 #### 1.6 租户管理 - [x] 多租户支持 - [x] 租户信息管理 - [x] 租户状态控制 **实体统计:** 9个核心实体 - User(用户) - Role(角色) - RoleTag(角色标签) - Permission(权限) - PermissionTemplate(权限模板) - Menu(菜单) - Department(部门) - Tenant(租户) - SysParam(系统参数) --- ### ✅ 2. 外部系统集成(已完成) #### 2.1 外部系统管理 - [x] 外部系统统一管理(Jenkins、Git等) - [x] 多种认证方式支持 - 用户名密码认证 - Token认证 - SSH密钥认证 - [x] 连接测试 - [x] 同步状态追踪 **主要接口:** ``` 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集成 - [x] Jenkins实例管理 - [x] 视图(View)同步 - [x] 任务(Job)同步 - [x] 构建(Build)信息同步 - [x] 构建历史记录 - [x] 同步历史追踪 **主要接口:** ``` 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仓库集成 - [x] Git仓库组(Group)管理 - [x] Git项目(Project)管理 - [x] Git分支(Branch)管理 - [x] 多级同步(组 → 项目 → 分支) - [x] 同步历史记录 **主要接口:** ``` 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 应用管理 - [x] 应用创建与维护 - [x] 应用编码管理 - [x] 开发语言类型支持(Java、Python、Node.js等) - [x] 应用与仓库关联 - [x] 应用分组管理 **主要接口:** ``` POST /api/v1/applications - 创建应用 GET /api/v1/applications/development-languages - 获取开发语言列表 ``` **相关实体:** - Application(应用) - ProjectGroup(项目组) #### 3.2 环境管理 - [x] 环境配置管理(开发、测试、生产等) - [x] 环境编码管理 - [x] 构建类型配置(Jenkins、GitLab Runner、GitHub Action) - [x] 部署方式配置(K8S、Docker、VM) - [x] 项目组与环境关联 **相关实体:** - Environment(环境) #### 3.3 部署配置 - [x] 应用部署配置管理 - [x] 构建配置Schema定义 - [x] 部署操作 - [x] 部署日志记录 **主要接口:** ``` 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 工作流定义 - [x] 工作流设计和保存 - [x] 工作流发布管理 - [x] 工作流启用/禁用 - [x] 工作流状态管理(草稿、已发布、已禁用) - [x] 图形化配置(GraphJSON) - [x] BPMN XML自动生成 - [x] 工作流分类管理 **主要接口:** ``` 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 工作流实例 - [x] 工作流实例启动 - [x] 工作流实例挂起 - [x] 工作流实例恢复 - [x] 工作流执行状态查询 - [x] 历史实例查询 - [x] 实例与模板关联查询 **主要接口:** ``` 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 节点定义与执行 - [x] 节点类型管理 - [x] 节点配置Schema - [x] 节点实例状态追踪 - [x] 节点重试机制 - [x] 节点跳过机制 **主要接口:** ``` POST /api/v1/workflow/node-instance/{id}/retry - 重试节点 POST /api/v1/workflow/node-instance/{id}/skip - 跳过节点 ``` #### 4.4 节点类型实现(Delegate) - [x] **ShellNodeDelegate** - Shell脚本执行 - [x] **DeployNodeDelegate** - 部署节点执行 - [x] **ApprovalNodeDelegate** - 审批节点 - [x] **NotificationNodeDelegate** - 通知节点 - [x] **BaseNodeDelegate** - 基础节点抽象 #### 4.5 工作流日志 - [x] 实时日志记录 - [x] 节点级日志 - [x] 日志查询 **相关实体:** - WorkflowDefinition(工作流定义) - WorkflowNodeDefinition(节点定义) - WorkflowInstance(工作流实例) - WorkflowNodeInstance(节点实例) - WorkflowLog(工作流日志) --- ### ✅ 5. 基础框架(已完成) #### 5.1 通用CRUD框架 - [x] BaseController - 统一REST控制器 - [x] BaseServiceImpl - 通用服务实现 - [x] IBaseRepository - 通用数据访问接口 - [x] BaseConverter - 对象转换抽象 - [x] 统一响应格式(Response) - [x] 统一分页格式(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 查询框架 - [x] 基于QueryDSL的类型安全查询 - [x] 动态查询条件构建 - [x] @QueryField注解支持 - [x] 多种查询类型(EQUAL、LIKE、BETWEEN、IN等) - [x] 软删除查询支持 #### 5.3 安全框架 - [x] Spring Security集成 - [x] JWT Token认证 - [x] 权限拦截器 - [x] 自定义认证入口点 - [x] JWT过滤器 #### 5.4 审计框架 - [x] 审计注解(@Audited) - [x] 自动记录创建人/创建时间 - [x] 自动记录更新人/更新时间 - [x] 乐观锁版本控制 - [x] 审计事件监听 #### 5.5 异常处理 - [x] 统一异常处理(GlobalExceptionHandler) - [x] 业务异常(BusinessException) - [x] 系统异常(SystemException) - [x] 唯一约束异常(UniqueConstraintException) - [x] 实体未找到异常(EntityNotFoundException) - [x] 国际化错误消息 #### 5.6 数据库版本控制 - [x] Flyway集成 - [x] 表结构版本管理(V1.0.0__init_schema.sql) - [x] 初始数据管理(V1.0.1__init_data.sql) - [x] 28个数据库表 #### 5.7 其他框架功能 - [x] 国际化支持(i18n) - [x] JSON序列化配置 - [x] 租户过滤器 - [x] 逻辑删除支持(@LogicDelete) - [x] 依赖注入后处理器 - [x] Formily Schema生成(用于前端表单) --- ## 数据库表结构(28张表) ### 系统管理表(7张) 1. `sys_tenant` - 租户表 2. `sys_department` - 部门表 3. `sys_user` - 用户表 4. `sys_param` - 系统参数表 5. `sys_role` - 角色表 6. `sys_role_tag` - 角色标签表 7. `sys_menu` - 菜单表 ### 权限管理表(5张) 8. `sys_role_tag_relation` - 角色标签关系表 9. `sys_user_role` - 用户角色关系表 10. `sys_role_menu` - 角色菜单关系表 11. `sys_permission_template` - 权限模板表 12. `sys_template_menu` - 模板菜单关系表 13. `sys_permission` - 权限表 ### 外部系统表(1张) 14. `sys_external_system` - 外部系统表 ### Git仓库表(3张) 15. `deploy_repo_group` - 仓库组表 16. `deploy_repo_project` - 仓库项目表 17. `deploy_repo_branch` - 仓库分支表 ### Jenkins表(4张) 18. Jenkins相关表(通过代码推断,未在SQL中完整展示) ### 工作流表(5张) 19. `workflow_definition` - 工作流定义表 20. `workflow_node_definition` - 节点定义表 21. `workflow_instance` - 工作流实例表 22. `workflow_node_instance` - 节点实例表 23. `workflow_log` - 工作流日志表 ### 部署管理表(6张) 24. `deploy_project_group` - 项目组表 25. `deploy_application` - 应用表 26. `deploy_environment` - 环境表 27. `deploy_project_group_environment` - 项目组环境关系表 28. `deploy_log` - 部署日志表 29. `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. 数据库准备 ```sql CREATE DATABASE `deploy-ease-platform` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ### 2. 配置修改 编辑 `src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/deploy-ease-platform?... username: your_username password: your_password jwt: secret: 'your_secret_key' # 建议使用环境变量 ``` ⚠️ **安全提示:** 生产环境请使用环境变量或配置中心管理敏感信息! ### 3. 启动项目 ```bash # 编译项目 mvn clean package -DskipTests # 启动服务 mvn spring-boot:run # 或直接运行 java -jar target/deploy-cd-1.0-SNAPSHOT.jar ``` ### 4. 访问服务 - **API文档:** http://localhost:8080/swagger-ui.html - **健康检查:** http://localhost:8080/actuator/health ### 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接口 - ⚠️ 测试覆盖率待提升 - ⚠️ 缓存机制待实现 - ⚠️ 生产环境配置待优化 --- **注意事项:** 1. 本项目处于开发阶段,部分功能仍在完善中 2. 生产环境使用前请务必完成安全加固 3. 建议补充完整的单元测试和集成测试 4. 数据库配置和JWT密钥需要外部化管理 5. 建议集成专业的日志分析和监控方案