GitHub Actions矩阵构建:3步实现Python/Node.js多版本兼容测试
1. 矩阵构建不是“多开几个job”,而是让CI真正理解你的兼容性边界大多数人第一次写 GitHub Actions 矩阵(matrix),是照着文档把python-version: [3.8, 3.9, 3.10]和node-version: [16, 18, 20]往.yml里一塞,跑起来发现:- Python 3.8 测试通过,3.10 却报ModuleNotFoundError: No module named 'dataclasses'—— 这个模块在 3.7+ 是内置的,但某些旧版pydantic2会错误地 import 它;- Node.js 16 能装sharp@0.32,18 却卡在gyp ERR! find Python,因为新版node-gyp默认找 Python 3.10,而 CI runner 只预装了 3.9;- 更隐蔽的是:你用 AI 编程工具生成的测试用例,在本地 Python 3.11 上跑得飞快,一上 CI 的 3.8 环境就 timeout —— 因为asyncio.timeout()在 3.11 才引入,AI 没告诉你它悄悄用了新语法。这不是矩阵配置错了,是你没告诉 CI:“哪些组合根本没必要跑”。我接手过一个 Python/Node.js 混合项目,初始矩阵是3.8–3.12 × 16–20,共 15 个 job。实测下来,其中 7 个 job 永远不