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
相关产品推荐
相关产品推荐

