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

GitHub Actions:如何通过workflow_dispatch输入覆盖默认矩阵?

实现Workflow Dispatch输入覆盖矩阵默认值

要实现通过workflow_dispatch输入覆盖矩阵的默认Python版本列表,同时支持单值或JSON数组格式的输入,你需要通过动态生成矩阵的方式实现——GitHub Actions原生不支持直接在矩阵中引用workflow输入,因此需要先通过预处理Job生成符合要求的矩阵JSON,再传递给测试Job使用。

完整实现示例

name: CICD
on:
  push:
    branches:
      - main
  workflow_dispatch:
    inputs:
      py_version:
        description: "Python版本:可输入单值(如3.11)或JSON数组(如[3.5, 2.7])"
        default: "[3.7, 3.10]"

jobs:
  # 预处理Job:根据触发事件生成动态矩阵
  generate_matrix:
    runs-on: ubuntu-22.04
    outputs:
      matrix: ${{ steps.set_matrix.outputs.matrix }}
    steps:
      - id: set_matrix
        run: |
          # 根据触发事件选择矩阵源
          if [[ "${{ github.event_name }}" == "push" ]]; then
            # Push触发时使用默认矩阵
            MATRIX='{"py_version": ["3.7", "3.10"]}'
          else
            # 处理Workflow Dispatch的用户输入
            INPUT="${{ github.event.inputs.py_version }}"
            # 如果输入不是JSON数组格式,自动转为单元素数组
            if [[ "$INPUT" != "["* ]]; then
              MATRIX="{\"py_version\": [\"$INPUT\"]}"
            else
              # 直接使用用户输入的JSON数组
              MATRIX="{\"py_version\": $INPUT}"
            fi
          fi
          # 将矩阵输出到GitHub Actions环境变量
          echo "matrix=$MATRIX" >> "$GITHUB_OUTPUT"

  # 测试Job:使用动态生成的矩阵
  test:
    needs: generate_matrix
    runs-on: ubuntu-22.04
    strategy:
      matrix: ${{ fromJson(needs.generate_matrix.outputs.matrix) }}
    steps:
      - uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.py_version }}
      # 这里可以添加你的测试步骤,比如安装依赖、运行测试等
      - run: python --version

关键说明

  1. 动态矩阵生成

    • 通过generate_matrix Job预处理输入:Push触发时使用默认的[3.7, 3.10];Workflow Dispatch触发时解析用户输入。
    • 自动兼容单值输入(如3.11)和JSON数组输入(如[3.5, 2.7]),统一转换为矩阵所需的JSON格式。
  2. 矩阵传递与使用

    • 使用needs关键字让测试Job依赖预处理Job,确保矩阵生成完成后再执行测试。
    • 通过fromJson()函数将预处理输出的字符串转换为GitHub Actions可识别的矩阵对象。
  3. 输入格式要求

    • 单值输入直接填写版本号(如3.11)。
    • 多版本输入需使用有效的JSON数组格式(如[3.5, 2.7]或["3.5", "2.7"],两种格式均可被解析)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:25:32