Process æµæ°´çº¿æ ¸å¿æ¨¡åæ¶ææå
模åå®ä½: Process æ¯ BK-CI çæ ¸å¿æ¨¡åï¼è´è´£æµæ°´çº¿çç¼æãè°åº¦ä¸æ§è¡ã
è¯¦ç»ææ¡£å¯¼èª
æ¬ Skill æä¾ Process 模åçæ¶ææ»è§ãå¦éæ·±å
¥äºè§£åå±å®ç°ç»èï¼è¯·æ¥é
以ä¸åèææ¡£ï¼
使ç¨å»ºè®®: å
é
è¯»æ¬ææ¡£äºè§£æ´ä½æ¶æï¼åæ ¹æ®å
·ä½å¼åéæ±æ·±å
¥å¯¹åºçåèææ¡£ã
ä¸ãæ¨¡åæ´ä½ç»æ
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 è°åº¦æå¡