# nexus_platform **Repository Path**: kattall/nexus_platform ## Basic Information - **Project Name**: nexus_platform - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-09 - **Last Updated**: 2026-02-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Nexus 制品晋升自动化平台 ## 项目介绍 Nexus 制品晋升自动化系统是一个用于将 JAR 制品从开发环境安全、高效地晋升到生产环境的自动化平台。系统集成了安全扫描、权限管控、审计日志等功能,确保制品晋升过程的安全性和可追溯性。 **当前状态**:MVP 开发完成 ## 核心功能 - **制品晋升管理** - 单个制品晋升(支持 Maven 坐标格式:`groupId:artifactId:version`) - 批量制品晋升 - 晋升状态跟踪 - 晋升重试和取消 - **安全扫描** - 集成 Grype 进行漏洞扫描 - 自动阻断高危漏洞制品 - 扫描报告查看 - **权限管理** - 基于 RBAC 的权限系统 - 预定义角色:管理员、运维人员、开发人员、只读用户 - 细粒度权限控制(31 个权限点) - 支持 Keycloak OIDC 单点登录 - **环境配置** - Nexus 仓库配置管理 - 连接测试 - 多环境支持(开发、测试、生产等) - **项目管理** - 项目组管理 - Lark/Feishu Webhook 通知 - **审计日志** - 自动记录所有写操作 - 支持按模块、操作类型、用户筛选 - 完整的操作追溯 - **系统监控** - 系统健康检查 - Nexus 服务状态监控 - 数据统计面板 ## 技术栈 ### 后端 - **语言**:Go 1.24 - **框架**:Gin (Web 框架) + GORM (ORM) - **数据库**:MySQL 8.0 + Redis 7.2 - **认证**:JWT + Keycloak OIDC - **安全扫描**:Grype - **容器化**:Docker + Docker Compose ### 前端 - **框架**:Vue 3 + TypeScript - **UI 组件**:Ant Design Vue - **状态管理**:Pinia - **构建工具**:Vite - **样式**:毛玻璃效果 (Glassmorphism) ## 系统架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ 用户 / CI/CD 系统 │ └─────────────────────────────────────────────────────────────┘ │ ┌───────────────────┼───────────────────┐ ▼ ▼ ▼ Web 界面 API 接口 API Key 认证 │ │ │ └───────────────────┼───────────────────┘ ▼ ┌───────────────────────────────────────┐ │ Nexus 制品晋升自动化平台 │ │ ┌─────────────────────────────────┐ │ │ │ 认证授权 (JWT + OIDC) │ │ │ └─────────────────────────────────┘ │ │ ┌─────────────────────────────────┐ │ │ │ 晋升管理 (单个/批量) │ │ │ └─────────────────────────────────┘ │ │ ┌─────────────────────────────────┐ │ │ │ 安全扫描 (Grype) │ │ │ └─────────────────────────────────┘ │ │ ┌─────────────────────────────────┐ │ │ │ 权限管理 (RBAC) │ │ │ └─────────────────────────────────┘ │ │ ┌─────────────────────────────────┐ │ │ │ 审计日志 │ │ │ └─────────────────────────────────┘ │ └───────────────────────────────────────┘ │ ┌───────────────────┼───────────────────┐ ▼ ▼ ▼ MySQL 数据库 Redis 缓存 Nexus 仓库 │ ▼ Lark Webhook ``` ## 快速开始 ### 前置要求 - Docker 20.10+ - Docker Compose 2.0+ - 8GB+ 可用内存 - Nexus Repository Manager (开发/生产环境) ### 安装步骤 1. **克隆仓库** ```bash git clone cd nexus_platform ``` 2. **生成 JWT 密钥** 创建配置目录并生成 RSA 密钥对: ```bash mkdir -p backend/config # 生成私钥 openssl genrsa -out backend/config/jwt_private.pem 2048 # 生成公钥 openssl rsa -in backend/config/jwt_private.pem -pubout -out backend/config/jwt_public.pem ``` > **说明**:JWT 密钥用于签名和验证访问令牌,私钥必须妥善保管,不要提交到代码仓库。 3. **配置环境变量** 从模板文件创建配置: ```bash cp docker-compose.yaml.tpl docker-compose.yaml ``` 编辑 `docker-compose.yaml`,替换以下占位符: **必须修改的配置:** - `YOUR_MYSQL_PASSWORD` - MySQL 数据库密码(需要在 3 处修改) - `MYSQL_ROOT_PASSWORD` - `DATABASE_DSN` 中的密码 - `healthcheck` 中的 `-p` 参数 - `YOUR_ADMIN_PASSWORD` - 管理员初始密码(模板默认:`Admin@12345`) - `YOUR_DOMAIN` - 前端访问地址(如 `localhost` 或 `192.168.1.100`) > **提示**:如果不修改配置直接使用模板,默认管理员账号为 `admin / Admin@12345` **可选配置(如需启用 OIDC):** - `OIDC_ENABLED=true` - 启用 OIDC 单点登录 - `YOUR_KEYCLOAK_HOST` - Keycloak 服务器地址 - `YOUR_REALM` - Keycloak Realm 名称 - `YOUR_CLIENT_ID` - OIDC 客户端 ID - `YOUR_CLIENT_SECRET` - OIDC 客户端密钥 **生产环境额外配置:** 取消注释并配置: ```yaml - ENCRYPTION_KEY=your-32-character-key # 32位加密密钥 - GO_ENV=production # 启用生产模式 ``` 4. **启动服务** ```bash docker-compose up -d ``` 5. **访问系统** - 前端地址:http://localhost:5173 - 后端 API:http://localhost:8080 - 默认账号:`admin / Admin@12345`(⚠️ 生产环境必须修改) ### 首次使用配置 1. 登录系统后,进入「环境配置」页面 2. 添加 Nexus 开发环境和生产环境配置 3. 测试连接确保配置正确 4. 进入「项目管理」创建项目组 5. 配置安全策略(可选) 6. 开始使用制品晋升功能 ## 目录结构 ``` nexus_platform/ ├── backend/ # 后端代码 │ ├── cmd/server/ # 主程序入口 │ ├── internal/ # 内部包 │ │ ├── config/ # 配置管理 │ │ ├── handler/ # HTTP 处理器 │ │ ├── middleware/ # 中间件 │ │ ├── model/ # 数据模型 │ │ ├── service/ # 业务逻辑 │ │ ├── nexus/ # Nexus 客户端 │ │ └── oidc/ # OIDC 集成 │ ├── config/ # 配置文件 │ └── Dockerfile # 后端镜像构建 ├── frontend/ # 前端代码 │ ├── src/ │ │ ├── api/ # API 接口 │ │ ├── pages/ # 页面组件 │ │ ├── layouts/ # 布局组件 │ │ ├── router/ # 路由配置 │ │ ├── store/ # 状态管理 │ │ └── directives/ # 自定义指令 │ └── Dockerfile # 前端镜像构建 ├── docker-compose.yaml # Docker 编排文件 ├── .gitignore # Git 忽略规则 ├── CLAUDE.md # 开发指南 └── README.md # 项目说明 ``` ## API 文档 启动服务后,访问 Swagger API 文档: - http://localhost:8080/swagger/index.html 主要 API 端点: - `POST /api/v1/auth/login` - 用户登录 - `POST /api/v1/promotions` - 创建晋升任务 - `POST /api/v1/promotions/batch` - 批量晋升 - `GET /api/v1/promotions` - 查询晋升列表 - `GET /api/v1/system/health` - 系统健康检查 ## 开发指南 详细的开发指南请参考 [CLAUDE.md](./CLAUDE.md) ### 本地开发 **后端开发** ```bash cd backend go mod download go run cmd/server/main.go ``` **前端开发** ```bash cd frontend npm install npm run dev ``` ### 代码提交规范 - `feat`: 新功能 - `fix`: 修复 Bug - `refactor`: 重构 - `docs`: 文档更新 - `style`: 代码格式调整 - `test`: 测试相关 示例:`feat: 添加批量晋升功能` ## 配置说明 ### 环境变量 | 变量名 | 说明 | 默认值 | |--------|------|--------| | `SERVER_ADDRESS` | 服务监听地址 | `:8080` | | `DATABASE_DSN` | MySQL 连接字符串 | - | | `REDIS_ADDR` | Redis 地址 | `127.0.0.1:6379` | | `JWT_ACCESS_TTL` | 访问令牌有效期 | `2h` | | `JWT_REFRESH_TTL` | 刷新令牌有效期 | `168h` | | `CORS_ALLOW_ORIGINS` | 允许的跨域源 | `http://localhost:5173` | | `OIDC_ENABLED` | 是否启用 OIDC | `false` | | `ENCRYPTION_KEY` | 加密密钥 | - | ### 数据库初始化 系统首次启动时会自动: 1. 创建数据库表结构 2. 初始化 31 个权限点 3. 创建 4 个预定义角色 4. 创建管理员账号 5. 创建默认安全策略 ## 常见问题 ### 1. 登录页面显示 403 错误 检查 `CORS_ALLOW_ORIGINS` 环境变量是否包含前端访问地址。 ### 2. OIDC 登录按钮不显示 确认 `OIDC_ENABLED=true` 且 Keycloak 配置正确。 ### 3. Nexus 健康检查显示 404 确保 Nexus 仓库配置正确,系统会使用仓库根路径进行连接测试。 ### 4. 扫描功能报错 首次使用时 Grype 需要下载漏洞数据库,请确保网络连接正常。 ## 安全建议 1. **生产环境必须修改默认密码** 2. **设置 `ENCRYPTION_KEY` 环境变量**用于加密敏感数据 3. **设置 `GO_ENV=production`** 启用 Cookie Secure 标志 4. **定期更新 Grype 漏洞数据库** 5. **启用 HTTPS** 保护数据传输 6. **限制 API Key 权限**,仅授予必要的权限 ## 许可证 [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) ## 联系方式 如有问题或建议,请提交 Issue 或 Pull Request。