# Jenkins模块开发提示词 > 本文档为大模型提供rmdc-jenkins-branch-dac模块的开发上下文。 --- ## 模块概述 **rmdc-jenkins-branch-dac** 是RMDC平台的Jenkins分支级权限控制与构建管理模块。 ### 核心能力 1. **分支级权限控制(DAC)**: Organization → Repository → Branch 三级权限管理 2. **Jenkins API封装**: 组织/仓库/分支/构建的CRUD操作 3. **构建状态追踪**: 实时追踪构建进度,超时检测 4. **DCU流程**: Docker镜像的下载、压缩、上传到MinIO --- ## 项目结构 ``` rmdc-jenkins-branch-dac/ ├── internal/ │ ├── config/ # 配置 │ ├── dao/ # 数据访问 │ ├── handler/ # HTTP处理器 │ ├── model/ │ │ ├── dto/ # 请求/响应 │ │ └── entity/ # 数据库实体 │ └── service/ # 业务逻辑 └── pkg/ └── jenkins/ └── client.go # Jenkins HTTP Client ``` --- ## API设计规范 > **重要**: 使用POST + RequestBody,避免PathVariables ### 请求示例 ```go // ✅ 正确方式 type GetBuildRequest struct { OrganizationFolder string `json:"organization_folder"` RepositoryName string `json:"repository_name"` BranchName string `json:"branch_name"` BuildNumber int `json:"build_number"` } // ❌ 避免使用 // GET /api/jenkins/organizations/{org}/repositories/{repo}/branches/{branch}/builds/{number} ``` ### 接口清单 | 接口 | 方法 | 说明 | |------|------|------| | `/api/jenkins/organizations/list` | POST | 获取组织列表 | | `/api/jenkins/repositories/list` | POST | 获取仓库列表 | | `/api/jenkins/branches/list` | POST | 获取分支列表 | | `/api/jenkins/builds/list` | POST | 获取构建列表 | | `/api/jenkins/builds/trigger` | POST | 触发构建 | | `/api/jenkins/builds/detail` | POST | 获取构建详情 | | `/api/dcu/start` | POST | 启动DCU任务 | | `/api/dcu/status` | POST | 查询DCU状态 | --- ## 核心数据结构 ```go // Organization Jenkins组织 type Organization struct { ID int64 `gorm:"primaryKey"` Name string `gorm:"uniqueIndex"` DisplayName string URL string LastSyncAt time.Time } // Repository Jenkins仓库 type Repository struct { ID int64 `gorm:"primaryKey"` OrganizationID int64 `gorm:"index"` Name string URL string } // Branch Jenkins分支 type Branch struct { ID int64 `gorm:"primaryKey"` RepositoryID int64 `gorm:"index"` Name string LastBuildNumber int LastBuildResult string } // Build Jenkins构建 type Build struct { ID int64 `gorm:"primaryKey"` BranchID int64 `gorm:"index"` BuildNumber int Result string Timestamp int64 Duration int64 EstimatedDuration int64 IsBuilding bool ArtifactDockerImage string } ``` --- ## Jenkins API调用 ### URL路径规则 ``` {JENKINS_URL}/job/{ORG}/api/json # 获取组织信息 {JENKINS_URL}/job/{ORG}/job/{REPO}/api/json # 获取仓库信息 {JENKINS_URL}/job/{ORG}/job/{REPO}/job/{BRANCH}/api/json # 获取分支信息 {JENKINS_URL}/job/{ORG}/job/{REPO}/job/{BRANCH}/build # 触发构建 ``` ### 分支名编码 - `/` → `%2F` (例: `feature/login` → `feature%2Flogin`) --- ## 权限校验 权限通过中间件校验,Handler无需处理: ```go func (h *BuildHandler) TriggerBuild(c *gin.Context) { // 此时已通过权限校验 var req dto.TriggerBuildRequest if err := c.ShouldBindJSON(&req); err != nil { response.Error(c, err) return } resp, err := h.buildService.TriggerBuild(c.Request.Context(), &req) if err != nil { response.Error(c, err) return } response.Success(c, resp) } ``` --- ## 相关文档 | 文档 | 内容 | |------|------| | [1-jenkins-branch-dac-DDS.md](file:///c:/Users/wddsh/Documents/IdeaProjects/ProjectAGiPrompt/8-CMII-RMDC/2-Jenkins模块/1-jenkins-branch-dac-DDS.md) | 完整详细设计 | | [5-RMDC项目权限设计方案.md](file:///c:/Users/wddsh/Documents/IdeaProjects/ProjectAGiPrompt/8-CMII-RMDC/2-Jenkins模块/5-RMDC项目权限设计方案.md) | 权限设计 | | [9-rmdc-dcu模块设计方案.md](file:///c:/Users/wddsh/Documents/IdeaProjects/ProjectAGiPrompt/8-CMII-RMDC/2-Jenkins模块/9-rmdc-dcu模块设计方案.md) | DCU模块设计 |