Files
ProjectAGiPrompt/8-CMII-RMDC/2-rmdc-jenkins-dac/jenkins-dac-prompt.md
2026-01-21 16:15:49 +08:00

4.5 KiB
Raw Blame History

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

请求示例

// ✅ 正确方式
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/loginfeature%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模块设计