CI 流水线设计与提速指南
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/ci-pipeline-design-guide。
技能介绍
你要解决什么问题
一条 CI 流水线的价值,等于反馈速度乘以反馈可信度。反过来说:构建要 40 分钟、单测隔三差五红一次、PR 没人看结果——团队很快就会学会直接点 rerun,或者干脆不看。这个技能面对的是几个具体的老问题:
- 慢:每次 push 等半小时,开发者开始在本地先跑一遍再 push,CI 沦为形式。
- 飘:flaky 测试没人管,报警被习惯性忽略,真回归混在噪声里。
- 乱:所有检查堆在一条主干流水线上,本地能跑的 lint、必须上远端跑的集成测试没有区分。
- 贵:核时和缓存费用随并行度上升,却没人算过这笔账。
这个技能如何工作
它以「CI 流水线教练」的角色工作,围绕四个层面展开。
- 分层设计:按触发点拆流水线,用
paths与files过滤无关变更。提交级只跑lint + 编译 + 单元测试,目标是 P50 低于 1 分钟、中位 5 分钟以内;MR 级加回归测试与产物构建;定时任务负责依赖与镜像更新。把冒烟测试留在本地,是提速里性价比最高的一步。 - 缓存与并行化:定位可缓存的目录,配
actions/cache或等价机制,并持续监控命中率;把可拆分的测试分片并行跑,配合cancel-in-progress,让排队时间而不是 CPU 时间成为优化对象。 - 稳定性治理:新建 flaky 隔离区,把偶发失败摘出来,而不是任其污染主干;关掉无意义的强制 rerun,改走真实重试。
- 设施与选型:用 BuildKit 缓存做镜像加速,按需挂载远端计算资源;在自建 Jenkins 与 GitHub Actions 等选项之间,按关键决策点给出取舍。
它还会要求你补上四项观测指标:提交级 P50 时长(目标 <5 分钟)、pass 率(>95%)、flaky 隔离区数量趋势(只减不增)、从合并到可发布的时长。
适用边界
CI 平台的功能与计费迭代很快,具体语法和价格要以所用平台官方最新文档为准,这里给的是设计原则,不是某一套固定写法。密钥管理是硬红线:凭据只走平台的 secret 机制,禁止写进日志和构建产物;fork 出来的 PR 默认不授予 secret。另外,它不替代你现有的 CI 配置,也不会自动修改流水线文件,落地仍需自己动手。
使用场景
- 团队每次 push 都要等 30 分钟才拿到单测结果,想拆出能在本地先跑完的提交级流水线
- 测试时红时绿没人敢信,想建一个 flaky 隔离区,把偶发失败从主干流水线摘出去
- 打算按触发点把一条主干流水线拆成提交级、MR 级和定时任务,需要各层的时间预算
- 远端核时和缓存费用随并行度一路上涨,想监控缓存命中率并砍掉不值得的耗时
适合人员
- 后端工程师,CI 提交反馈要等 20 分钟,希望压缩本地验证的等待时间
- 测试工程师,flaky 用例越积越多,希望系统地隔离和治理随机失败
- DevOps 工程师,需要对比自建 Jenkins 和 GitHub Actions,为团队做 CI 选型
- 技术负责人,想建立 CI 可观测性,盯住 P50 反馈时长和合并到发布的时长