配置矩阵构建
本文档介绍如何通过 strategy.matrix 实现多操作系统、多语言版本、多架构的并行构建与测试。
当你需要在多个操作系统、多个语言版本、多种架构组合下并行执行测试或构建时。
前提条件
- 已确定需要测试的维度(OS、语言版本、架构等)。
- 已确认 Runner 标签能覆盖所需的运行环境。
快速示例
name: matrix-test
on:
push:
branches:
- main
jobs:
test:
name: 测试
runs-on: ['${{ matrix.os }}','${{ matrix.arch }}',small]
strategy:
matrix:
os: [ubuntu-latest, euler-latest]
arch: [x64]
node-version: [18, 20]
exclude:
- os: euler-latest
node-version: 18
fail-fast: false
max-parallel: 4
steps:
- name: Checkout source code
uses: checkout
- name: setup node
uses: setup-node
with:
node-version: ${{ matrix.node-version }}
- name: Run ci
run: npm ci
- name
run: npm test
配置说明
matrix 变量定义
matrix 定义矩阵变量,每个变量值的组合会生成一个 job 实例:
一维矩阵:
strategy:
matrix:
node-version: [18, 20, 22]
二维矩阵:
strategy:
matrix:
os: [ubuntu-latest, euler-latest]
node-version: [18, 20]
上面的二维矩阵会生成 2 × 2 = 4 个 job 实例。
三维矩阵:
strategy:
matrix:
os: [ubuntu-latest, euler-latest]
arch: [x64, arm64]
node-version: [18, 20]
include 展开与追加配置
include 用于向现有矩阵追加特定组合或为特定组合添加额外变量:
strategy:
matrix:
os: [ubuntu-latest]
node-version: [18, 20]
include:
- os: euler-latest
node-version: 20
include 中未在基础矩阵定义的变量也会被添加到对应 job 实例中。