Claude Code Plugins

Community-maintained marketplace

Feedback

29-process-module-architecture

@TencentBlueKing/bk-ci
2.5k
0

Process 流水线核心模块架构总览,涵盖流水线 CRUD、构建执行引擎、事件驱动机制、分层架构设计。当用户开发流水线核心功能、理解 Process 模块、修改构建逻辑或进行流水线相关开发时使用。

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name 29-process-module-architecture
description Process 流水线核心模块架构总览,涵盖流水线 CRUD、构建执行引擎、事件驱动机制、分层架构设计。当用户开发流水线核心功能、理解 Process 模块、修改构建逻辑或进行流水线相关开发时使用。

Process 流水线核心模块架构指南

模块定位: Process 是 BK-CI 的核心模块,负责流水线的编排、调度与执行。

相关 Skill 索引

Skill 内容
29-1-process-api-layer API 接口层详细分析
29-2-process-service-layer Service 业务层详细分析
29-3-process-engine-control 构建引擎 Control 层分析
29-4-process-dao-database DAO 层与数据库表结构
29-5-process-event-driven 事件驱动机制详解

一、模块整体结构

1.1 子模块划分

src/backend/ci/core/process/
├── api-process/          # API 接口定义层
│   └── src/main/kotlin/com/tencent/devops/process/api/
│       ├── user/         # 用户接口(20+文件)
│       ├── service/      # 服务间调用接口(25+文件)
│       ├── builds/       # 构建机接口(8文件)
│       ├── template/     # 模板接口(6文件)
│       └── op/           # 运维接口(12文件)
│
├── biz-base/             # 基础业务逻辑层(核心)
│   └── src/main/kotlin/com/tencent/devops/process/
│       ├── engine/
│       │   ├── dao/      # 数据访问层(20+文件)
│       │   ├── service/  # 核心服务(30+文件)
│       │   ├── pojo/     # 数据对象
│       │   │   └── event/# 事件定义(19文件)
│       │   └── control/  # 控制逻辑
│       └── service/      # 业务服务
│
├── biz-engine/           # 构建引擎层
│   └── src/main/kotlin/com/tencent/devops/process/engine/
│       ├── control/      # 调度控制器(9文件)
│       ├── atom/         # 插件执行
│       └── listener/     # 事件监听
│
├── biz-process/          # 业务处理层
│   └── src/main/kotlin/com/tencent/devops/process/
│       ├── api/          # API 实现(ResourceImpl)
│       ├── service/      # Facade 服务
│       ├── permission/   # 权限服务
│       └── trigger/      # 触发服务
│
├── boot-engine/          # 引擎启动模块
├── boot-process/         # 服务启动模块
└── model-process/        # 数据模型层(JOOQ 生成)

1.2 模块职责矩阵

模块 职责 核心类数量 依赖关系
api-process REST API 接口定义 91 被 biz-process 实现
biz-process 业务逻辑、API 实现 100+ 依赖 biz-base
biz-base 引擎核心服务、DAO 185+ 依赖 model-process
biz-engine 构建调度引擎 25 依赖 biz-base
model-process JOOQ 数据模型 自动生成 基础层

二、分层架构图

┌─────────────────────────────────────────────────────────────────────────┐
│                              请求入口                                    │
│                    HTTP Request / 服务间调用 / MQ 消息                    │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                         API 层 (api-process)                             │
│  ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐    │
│  │UserPipeline  │ │ServiceBuild  │ │BuildBuild    │ │UserTemplate  │    │
│  │Resource      │ │Resource      │ │Resource      │ │Resource      │    │
│  │(用户流水线)   │ │(服务间构建)   │ │(构建机调用)   │ │(模板管理)    │    │
│  └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘    │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                       业务层 (biz-process)                               │
│  ┌──────────────────────────────────────────────────────────────────┐   │
│  │                      ResourceImpl 实现层                          │   │
│  │  UserPipelineResourceImpl | ServiceBuildResourceImpl | ...       │   │
│  └──────────────────────────────────────────────────────────────────┘   │
│                                    │                                     │
│  ┌──────────────────────────────────────────────────────────────────┐   │
│  │                      Facade Service 层                            │   │
│  │  PipelineInfoFacadeService    - 流水线信息管理门面                  │   │
│  │  PipelineListFacadeService    - 流水线列表查询门面                  │   │
│  │  PipelineVersionFacadeService - 版本管理门面                       │   │
│  │  ParamFacadeService           - 参数管理门面                       │   │
│  └──────────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                      基础业务层 (biz-base)                               │
│  ┌──────────────────────────────────────────────────────────────────┐   │
│  │                      Engine Service 层                            │   │
│  │  PipelineRepositoryService  - 流水线存储服务(110KB,核心)         │   │
│  │  PipelineRuntimeService     - 运行时服务(101KB,核心)            │   │
│  │  PipelineContainerService   - 容器管理服务                        │   │
│  │  PipelineStageService       - 阶段管理服务                        │   │
│  │  PipelineTaskService        - 任务管理服务                        │   │
│  └──────────────────────────────────────────────────────────────────┘   │
│                                    │                                     │
│  ┌──────────────────────────────────────────────────────────────────┐   │
│  │                      DAO 层                                       │   │
│  │  PipelineInfoDao | PipelineBuildDao | PipelineResourceDao        │   │
│  └──────────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                      引擎层 (biz-engine)                                 │
│  ┌──────────────────────────────────────────────────────────────────┐   │
│  │                      Control 层 (核心调度)                         │   │
│  │  BuildStartControl | StageControl | ContainerControl | TaskControl│   │
│  │  BuildEndControl | BuildCancelControl | MutexControl             │   │
│  └──────────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                      数据层 (model-process + MySQL)                      │
│  数据库:devops_process(共 92 张表)                                    │
└─────────────────────────────────────────────────────────────────────────┘

三、核心数据流

3.1 流水线创建流程

用户请求
    │
    ▼
UserPipelineResource.create()          # API 层
    │
    ▼
UserPipelineResourceImpl.create()      # 实现层
    │
    ▼
PipelineInfoFacadeService.createPipeline()  # Facade 层
    │
    ├─► 权限校验 (PipelinePermissionService)
    ├─► 模型校验 (ModelCheckPlugin)
    │
    ▼
PipelineRepositoryService.deployPipeline()  # Engine Service 层
    │
    ├─► PipelineInfoDao.create()        # 保存流水线信息
    ├─► PipelineResourceDao.create()    # 保存流水线模型
    └─► PipelineSettingDao.create()     # 保存流水线配置

3.2 构建执行完整流程(对应流程图)

┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                        触发层                                                     │
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
│  ┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐                             │
│  │ Quartz定时调度   │     │ API接口触发      │     │ Webhook触发     │                             │
│  │ PipelineQuartz  │     │ UserBuild       │     │ PipelineBuild   │                             │
│  │ Service         │     │ Resource        │     │ WebhookService  │                             │
│  └────────┬────────┘     └────────┬────────┘     └────────┬────────┘                             │
│           │                       │                       │                                       │
│           └───────────────────────┼───────────────────────┘                                       │
│                                   ▼                                                               │
│                    ┌──────────────────────────────┐                                               │
│                    │ PipelineTimerService         │  ← 定时触发服务                                │
│                    │ PipelineBuildFacadeService   │  ← 构建门面服务                                │
│                    └──────────────┬───────────────┘                                               │
└───────────────────────────────────┼───────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                     拦截器链层                                                    │
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
│  ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │
│  │                         PipelineInterceptorChain                                             │ │
│  │  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────────────────┐                  │ │
│  │  │ RunLock         │→ │ Queue           │→ │ TimerTriggerScmChange       │                  │ │
│  │  │ Interceptor     │  │ Interceptor     │  │ Interceptor                 │                  │ │
│  │  │ (运行锁检查)     │  │ (队列/并发控制)  │  │ (定时触发源码变更检查)        │                  │ │
│  │  └─────────────────┘  └─────────────────┘  └─────────────────────────────┘                  │ │
│  └─────────────────────────────────────────────────────────────────────────────────────────────┘ │
└───────────────────────────────────┼───────────────────────────────────────────────────────────────┘
                                    │ 拦截通过
                                    ▼
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                   运行时服务层                                                    │
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
│  PipelineRuntimeService.startBuild()                                                             │
│    ├─► 生成 buildId                                                                              │
│    ├─► 创建构建记录 (T_PIPELINE_BUILD_HISTORY)                                                   │
│    ├─► 创建 Stage/Container/Task 记录                                                            │
│    └─► 保存构建变量                                                                              │
└───────────────────────────────────┼───────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                   事件分发层                                                      │
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
│  PipelineEventDispatcher.dispatch(PipelineBuildStartEvent)  ──────────►  RabbitMQ                │
└───────────────────────────────────┼───────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                   监听器层 (Listener)                                             │
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
│  ┌─────────────────────┐  ┌─────────────────────┐  ┌─────────────────────┐                       │
│  │PipelineBuildStart   │  │PipelineStageBuild   │  │PipelineContainerBuild│                      │
│  │Listener             │  │Listener             │  │Listener             │                       │
│  │  └► BuildStartControl│  │  └► StageControl    │  │  └► ContainerControl│                       │
│  └─────────────────────┘  └─────────────────────┘  └─────────────────────┘                       │
│  ┌─────────────────────┐  ┌─────────────────────┐  ┌─────────────────────┐                       │
│  │PipelineAtomTaskBuild│  │PipelineBuildFinish  │  │PipelineBuildCancel  │                       │
│  │Listener             │  │Listener             │  │Listener             │                       │
│  │  └► TaskControl     │  │  └► BuildEndControl │  │  └► BuildCancelControl│                      │
│  └─────────────────────┘  └─────────────────────┘  └─────────────────────┘                       │
└───────────────────────────────────┼───────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                   引擎控制层 (Control)                                            │
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
│  BuildStartControl ─► StageControl ─► ContainerControl ─► TaskControl ─► BuildEndControl        │
│        │                   │                 │                 │                                 │
│        │                   │                 │                 ▼                                 │
│        │                   │                 │    ┌─────────────────────────┐                    │
│        │                   │                 │    │ 发送 AgentStartupEvent  │                    │
│        │                   │                 │    │ 到 Dispatch 服务        │                    │
│        │                   │                 │    └───────────┬─────────────┘                    │
│        │                   │                 │                │                                  │
│        ▼                   ▼                 ▼                ▼                                  │
│  ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │
│  │                              命令链 (Command Chain)                                          │ │
│  │  Stage: CheckSkip → CheckInterrupt → CheckPauseReview → StartContainer → UpdateState       │ │
│  │  Container: CheckSkip → CheckDependOn → CheckMutex → CheckDispatch → StartTask → UpdateState│ │
│  └─────────────────────────────────────────────────────────────────────────────────────────────┘ │
└───────────────────────────────────┼───────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                   Dispatch 调度服务                                               │
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
│  ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │
│  │ DispatcherService (构建机分配服务)                                                           │ │
│  │   ├─► ThirdPartyDispatchService (第三方构建机调度)                                           │ │
│  │   │     ├─► ThirdPartyAgentIDDispatchType (指定Agent)                                       │ │
│  │   │     └─► ThirdPartyAgentEnvDispatchType (环境调度)                                       │ │
│  │   ├─► VMDispatcher (虚拟机调度)                                                             │ │
│  │   └─► DockerDispatcher (Docker调度)                                                         │ │
│  └─────────────────────────────────────────────────────────────────────────────────────────────┘ │
│                                           │                                                      │
│                                           ▼                                                      │
│  ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │
│  │ 构建分发 REST API                                                                            │ │
│  │   BuildAgentBuildResource.claimBuildTask()  ← Agent 领取任务                                 │ │
│  └─────────────────────────────────────────────────────────────────────────────────────────────┘ │
└───────────────────────────────────┼───────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                   构建机 Agent                                                    │
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
│  ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │
│  │ BuildRunner (容器或虚运行)                    MasterRunner (裸运行)                          │ │
│  │   ├─► 领取任务                                 ├─► 领取任务                                  │ │
│  │   ├─► 执行插件                                 ├─► 执行插件                                  │ │
│  │   ├─► 心跳上报                                 ├─► 心跳上报                                  │ │
│  │   └─► 回调完成                                 └─► 回调完成                                  │ │
│  └─────────────────────────────────────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘

四、核心类速查

4.1 触发层

类名 模块 职责
PipelineQuartzService biz-process Quartz 定时调度服务
PipelineQuartzJob biz-process Quartz Job 实现
PipelineTimerService biz-process 定时器管理服务
PipelineTimerBuildListener biz-process 定时触发监听器

4.2 拦截器层

类名 模块 职责
PipelineInterceptorChain biz-base 拦截器链
PipelineInterceptor biz-base 拦截器接口
RunLockInterceptor biz-base 运行锁拦截器
QueueInterceptor biz-base 队列/并发控制拦截器
TimerTriggerScmChangeInterceptor biz-base 定时触发源码变更检查

4.3 Service 层

类名 文件大小 职责
PipelineRepositoryService 110KB 流水线存储,最核心的服务
PipelineRuntimeService 101KB 构建运行时管理
PipelineBuildFacadeService 137KB 构建管理门面
PipelineInfoFacadeService 80KB 流水线信息管理门面

4.4 监听器层

类名 模块 消费事件
PipelineBuildStartListener biz-engine PipelineBuildStartEvent
PipelineStageBuildListener biz-engine PipelineBuildStageEvent
PipelineContainerBuildListener biz-engine PipelineBuildContainerEvent
PipelineAtomTaskBuildListener biz-engine PipelineBuildAtomTaskEvent
PipelineBuildFinishListener biz-engine PipelineBuildFinishEvent
PipelineBuildCancelListener biz-engine PipelineBuildCancelEvent

4.5 Control 层

类名 文件大小 职责
BuildStartControl 41KB 构建启动控制
StageControl 10KB 阶段调度控制
ContainerControl 13KB 容器调度控制
TaskControl 12KB 任务调度控制
BuildEndControl 27KB 构建结束控制
MutexControl 26KB 互斥锁控制

4.6 DAO 层

类名 文件大小 职责
PipelineBuildDao 80KB+ 构建历史数据访问
PipelineInfoDao 30KB 流水线信息数据访问
PipelineResourceDao 15KB 流水线模型数据访问

五、开发规范

5.1 新增功能检查清单

  • API 接口定义在 api-process 模块
  • API 实现在 biz-process 模块
  • 核心服务在 biz-base 模块
  • DAO 使用 JOOQ,禁止手写 SQL
  • 事件通过 PipelineEventDispatcher 分发
  • 遵循命名规范(见各子 Skill)

5.2 常见问题

Q: 流水线模型存储在哪里? A: T_PIPELINE_RESOURCE 表的 MODEL 字段,JSON 格式。

Q: 如何扩展新的触发方式? A: 在 StartType 枚举中添加,并在 PipelineTriggerEventService 处理。

Q: 事件如何分发? A: 通过 PipelineEventDispatcher 发送到 RabbitMQ,由对应 Control 消费。


版本: 2.1.0 | 更新日期: 2025-12-10 | 补充: 根据流程图完善触发层、拦截器层、监听器层、Dispatch 调度服务