You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions外部作业中定义OS矩阵并复用工作流?

解决方案:动态传递矩阵参数到复用工作流

要实现外部作业定义OS矩阵并复用共享测试代码,核心是让可复用工作流接收外部传入的矩阵配置,而非在内部固定矩阵。以下是具体实现步骤:

1. 修改可复用工作流 test.yml

将原固定的strategy改为接收外部输入参数,通过JSON字符串传递矩阵数据,再在工作流内部解析使用:

name: 可复用测试工作流
on:
  workflow_call:
    inputs:
      os_matrix:
        description: 运行测试的操作系统列表
        type: string
        required: true

jobs:
  unit-test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        # 将传入的JSON字符串解析为数组
        os: ${{ fromJSON(inputs.os_matrix) }}
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
      # 这里保留你的共享测试步骤(安装依赖、执行测试等)
      - name: 执行单元测试
        run: |
          echo "在 ${{ matrix.os }} 上运行测试"
          # 替换为实际测试命令,比如 npm test 或 pytest 等

2. 在主工作流中动态传递矩阵

主工作流里的每个作业(如test_run_a、test_run_b)可以自定义OS列表,以JSON字符串形式传递给复用工作流:

name: 主工作流
on: [push, pull_request]

jobs:
  test_run_a:
    name: 双系统测试(Ubuntu + macOS)
    uses: ./.github/workflows/test.yml
    with:
      # 传递包含双系统的JSON数组
      os_matrix: '["ubuntu-latest", "macos-latest"]'

  test_run_b:
    name: 单系统测试(仅macOS)
    uses: ./.github/workflows/test.yml
    with:
      # 传递仅包含macOS的JSON数组
      os_matrix: '["macos-latest"]'

关键说明

  • GitHub Actions的workflow_call输入暂不直接支持数组类型,因此用JSON字符串传递矩阵数据,再通过fromJSON()函数解析为可识别的数组。
  • 若需要传递更复杂的矩阵(如同时包含OS和其他参数,比如Node.js版本),可以扩展输入参数为完整的矩阵配置:
    # test.yml 中修改输入和矩阵
    inputs:
      full_matrix:
        description: 完整的测试矩阵配置
        type: string
        required: true
    jobs:
      unit-test:
        strategy:
          matrix: ${{ fromJSON(inputs.full_matrix) }}
        runs-on: ${{ matrix.os }}
        steps:
          - name: 安装 Node.js ${{ matrix.node-version }}
            uses: actions/setup-node@v4
            with:
              node-version: ${{ matrix.node-version }}
    
    主工作流传递完整矩阵:
    test_run_c:
      uses: ./.github/workflows/test.yml
      with:
        full_matrix: '{"os": ["ubuntu-latest"], "node-version": ["18", "20"]}'
    

内容的提问来源于stack exchange,提问作者k huang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 09:31:00