首页/开发/CI/CD 与发布速查/GitHub Actions matrix 矩阵
工具链要点63 条

GitHub Actions matrix 矩阵

一次定义多环境组合:strategy.matrix 展开为多个并行作业,支持 include 追加组合、exclude 排除组合与 fail-fast 控制。

CI/CD 与发布速查开发更新于 2026-10-13

GitHub 矩阵构建是什么

一次定义多环境组合:strategy.matrix 把变量数组展开为多个并行作业,支持 include 追加组合、exclude 排除组合、fail-fast 控制失败行为。矩阵是「同一套测试跑遍支持面」的标准做法:OS、语言版本、依赖版本都能作为维度。组合数等于各维度大小的乘积,先算清规模再提交,额度与排队时间都跟它成正比。矩阵作业并行独立执行,不共享文件系统,要传递产物就用 artifact。

基本信息

维度变量数组,如 os、node、python
include/exclude追加或排除组合,include 可附加属性
fail-fast默认 true:一个失败取消其他作业
并发max-parallel 限制同时运行数
规模组合数 = 各维度大小相乘,注意额度

典型使用场景

  • 跨平台验证:Linux、macOS、Windows 跑同一套测试
  • 版本矩阵:对支持的语言或运行时版本逐一验证
  • 依赖组合:数据库、框架的兼容矩阵测试
  • 附加属性:include 为特定组合注入环境变量或参数
  • 成本控制:max-parallel 限制并发,折中额度与排队
  • 下游聚合:用 needs 汇总各矩阵作业结果再做汇总判定
  • 缓存隔离:缓存键纳入矩阵变量,避免组合间互相覆盖

矩阵与排除

矩阵与排除
jobs:
  test:
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest]
        node: [20, 22]
        exclude:
          - os: windows-latest
            node: 20
    runs-on: ${{ matrix.os }}
    steps:
      - run: node --version

关键字段

字段作用注意
matrix定义维度数组组合数按乘积增长
include追加组合或附加属性在 exclude 之后处理
exclude剔除组合先展开再排除
fail-fast失败是否取消其他跨平台验证常设为 false
max-parallel并发上限控制额度与排队时间
include 可追加新组合或为已有组合附加属性;注意它与 exclude 的作用顺序。
取消策略看目的:快速失败省额度,全量跑完看全貌;跨平台兼容验证通常设 fail-fast: false。
artifact 与缓存命名要带矩阵变量:并发写同一个名字会互相覆盖。
include 附加属性只作用于匹配到的已有组合;匹配不上时才会作为新组合追加。

易错点

  • 组合数膨胀:额度与排队时间上升,先算清规模
  • 依赖 Runner 镜像中的工具版本:不同镜像上行为漂移
  • Windows 路径与换行差异:脚本里的斜杠与换行硬编码在 Windows 上翻车
  • 处理顺序理解错:include 在 exclude 之后处理,能把排除的组合加回来,排除逻辑要覆盖这层
  • 缓存键不含矩阵变量:不同组合共用缓存互相污染,把 os 与版本变量写进键

数据来源与参考

  • GitHub Docs《Using a matrix for your jobs》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌