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

GitHub Actions工作流步骤中如何访问完整matrix配置?

获取GitHub Actions中完整的Strategy Matrix配置

GitHub Actions的matrix上下文仅返回当前Job实例对应的具体值,无法直接获取Strategy中定义的完整矩阵配置。以下是两种可行的解决方法:

方法一:预定义全局变量

将矩阵配置提前定义为工作流级别的环境变量,Strategy和步骤中都引用这个变量,这样就能在步骤中直接获取完整的配置数组。

name: Build
# 预定义完整的矩阵配置
env:
  MATRIX_VERSIONS: '["8.2", "8.1", "8.0", "7.4", "7.1"]'
  MATRIX_STAGES: '["php-dev", "php-prod"]'

jobs:
  build:
    runs-on: ubuntu-latest
    name: '${{ matrix.stage }}:${{ matrix.version }}'
    strategy:
      fail-fast: false
      matrix:
        # 引用预定义的变量生成矩阵
        version: ${{ fromJson(env.MATRIX_VERSIONS) }}
        stage: ${{ fromJson(env.MATRIX_STAGES) }}

    steps:
      - name: 输出完整的version数组
        run: |
          echo "完整version矩阵: $MATRIX_VERSIONS"
          # 可选:转换为Shell数组遍历
          VERSIONS=($(echo "$MATRIX_VERSIONS" | jq -r '.[]'))
          for version in "${VERSIONS[@]}"; do
            echo "版本: $version"
          done

方法二:通过GitHub API读取工作流定义

利用GitHub CLI或API获取当前工作流的完整定义,再用jq解析出Strategy中的矩阵配置。

jobs:
  build:
    runs-on: ubuntu-latest
    name: '${{ matrix.stage }}:${{ matrix.version }}'
    env:
      foo: bar
    strategy:
      fail-fast: false
      matrix:
        version: ["8.2", "8.1", "8.0", "7.4", "7.1"]
        stage: ['php-dev', 'php-prod']

    steps:
      - name: 获取完整的version数组
        run: |
          # 使用GitHub CLI获取工作流定义
          WORKFLOW_DEF=$(gh workflow view --json definition)
          # 解析出strategy中的version数组
          FULL_VERSIONS=$(echo "$WORKFLOW_DEF" | jq -r '.definition.jobs.build.strategy.matrix.version')
          echo "完整version矩阵: $FULL_VERSIONS"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

说明

  • 方法一的优势是简单直接,无需额外依赖,适合需要复用矩阵配置的场景。
  • 方法二无需修改现有矩阵定义,但需要依赖jq和GitHub CLI(默认已预装在GitHub托管的runner中),且需要GITHUB_TOKEN权限(默认已包含在Job中)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:57:44