4.5 KiB
4.5 KiB
Jenkins模块开发提示词
本文档为大模型提供rmdc-jenkins-branch-dac模块的开发上下文。
模块概述
rmdc-jenkins-branch-dac 是RMDC平台的Jenkins分支级权限控制与构建管理模块。
核心能力
- 分支级权限控制(DAC): Organization → Repository → Branch 三级权限管理
- Jenkins API封装: 组织/仓库/分支/构建的CRUD操作
- 构建状态追踪: 实时追踪构建进度,超时检测
- 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
请求示例
// ✅ 正确方式
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状态 |
核心数据结构
// 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无需处理:
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 | 完整详细设计 |
| 5-RMDC项目权限设计方案.md | 权限设计 |
| 9-rmdc-dcu模块设计方案.md | DCU模块设计 |