GitHub Actions 矩阵构建优化器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/github-actions-matrix-build-optimizer。
技能介绍
矩阵构建为什么会失控
当你在 matrix 里同时铺开 os、node-version 和 package-manager 时,组合数是乘法关系。三个维度各取 2、3、4 个取值,就会展开成 24 个 job。问题是,真正能覆盖不同代码路径的组合往往远少于这个数字:不少组合要么共享同一条构建依赖路径,要么在第一步就因为同一个原因失败。结果是 CI 时长被消耗在重复的 npm ci、重复的依赖安装和重复的构建产物上,而不是花在验证这次改动上。
它如何工作
- 解析与展开:读取工作流 YAML,把
strategy.matrix展开成完整的 job 组合清单,而不是只做文本替换。 - 依赖图分析:通过 GitHub REST API 拉取构建依赖信息,判断哪些组合实际走的是同一条构建路径。
- 裁剪冗余:剔除既不会改变构建结果、也不会增加测试覆盖的组合,保留真正有区分度的维度取值。
- 缓存与 setup 配置:结合
actions/setup-node和actions/cache的语义,为保留的组合补齐缓存键与环境配置,避免每次从零重装依赖。 - 输出修订结果:生成一份可直接回填的工作流文件,并按 commit 给出预估节省的 CI 时间。
适用边界
- 裁剪是启发式的,删掉的组合不等于可以安全忽略,合入前仍需人工复核覆盖范围。
- 对动态生成 matrix 的场景支持有限,需要表达式实际展开后才能判定。
- 依赖 GitHub REST API 的调用配额,大仓库分批分析时留意限流。
- 预估节省时长是估算值而非实测数据,建议先在验证分支跑一轮再合并。
- 只处理 GitHub Actions 工作流,不适用于其它 CI 系统。
使用场景
- 多版本 Node.js 矩阵构建太长,需要识别重复组合并压缩 CI 耗时。
- 矩阵里冗余 job 太多,需要依据构建依赖图删除无效测试组合。
- 想让 setup-node 和 cache 配置匹配精简后的矩阵,减少重复依赖安装。
- 需要按 commit 预估矩阵裁剪带来的 CI 时间节省,判断是否合入。
适合人员
- 维护 GitHub Actions 工作流的 DevOps 工程师,希望缩短 CI 时长并减少重复构建。
- 负责 CI/CD 成本的 SRE,需要定位矩阵策略中消耗资源的冗余 job。
- 在 monorepo 中管理多版本构建的工程师,需要按依赖关系裁剪测试矩阵。
- 开源仓库维护者,希望在依赖升级时平衡测试覆盖与 CI 排队时间。