Agent Skills
返回列表
🔒

GitLab CI 合并流水线优化器

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装规范名为 @user_3c6cb52e/gitlab-ci-merge-train-optimizer 的 GitLab CI 合并流水线优化器技能。

技能介绍

要解决的问题

合并请求流水线(merge train)在 GitLab 里是保护主干质量的关键路径,但它往往是整条 CI 中最慢的部分。项目规模上来之后,单次合并的 pipeline 里会堆叠大量 job:串行执行、互相等待、重复构建镜像和安装依赖。结果就是合并队列越排越长,开发者要么在等流水线时焦虑,要么等不及直接 push,主干保护反而形同虚设。

技能如何工作

这个技能通过 GitLab REST API v4 直接对接你的 GitLab 实例,核心入口是 /api/v4/projects/{id}/merge_trains。它的工作分三步:

  1. 拉取合并流水线数据:按项目 ID 查询 merge train 记录,获取各次合并对应的 pipeline 详情。
  2. 定位瓶颈阶段:统计每个 stage / job 的实际耗时,找出真正拖慢流水线的关键路径,而不是凭感觉猜「应该是测试太慢」。
  3. 生成并行化建议:基于分析结果推荐基于 DAG 的 job 依赖(通过 needs / dependencies 关键字),让彼此独立的 job 真正并行跑起来,而不是在 stage 边界上集体空等。

适用边界与注意点

  • 技能只负责分析和给出建议,不会自动改写 .gitlab-ci.yml;把建议落地仍需要人工确认。
  • 需要有效的 GitLab 访问令牌,且权限范围要覆盖项目的 API 读写。
  • DAG 并行化不是免费的:并行度提高后,runner 并发数、资源配额、缓存策略都得跟上,否则瓶颈只是从「等 job」变成「排队抢 runner」。
  • 串行依赖有时是有意设计(比如先产出构建产物供后续 job 使用),调整依赖关系前要确认没有隐藏的时序约束。

使用场景

  • 合并请求排队时间越来越长,需要定位具体是哪个 stage 拖慢了 merge train,再调整并行策略。
  • 接手一个历史项目,想梳理现有 `.gitlab-ci.yml` 里哪些 job 本可并行却写成了串行。
  • CI runner 资源充足但合并流水线利用率低,需要找出可以安全并行化的 stage 边界。
  • 准备优化合并流水线前,想先拿到客观的耗时数据作为决策依据,而不是凭经验猜瓶颈。

适合人员

  • 每周要处理多个 MR 的 DevOps 工程师,希望合并流水线排队时间可控,不阻塞团队交付节奏。
  • 维护 `.gitlab-ci.yml` 的后端工程师,对当前 job 依赖关系不满意,想要更合理的并行化方案。
  • 需要对 CI 流水线做容量规划的平台工程师,想先摸清各 stage 的实际耗时分布再分配 runner 资源。
  • 项目 CI 越来越慢的技术负责人,需要在深入排查前快速拿到瓶颈定位结果向团队说明方向。