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

GitHub Workflow动态矩阵如何合并手动输入值与预定义值

问题原因
  • GitHub Actions的strategy.matrix要求所有维度参数必须为数组类型,你直接将手动触发时输入的单个字符串传入,类型不匹配导致报错。
  • tag推送触发时github.event.inputs为空,直接读取该变量无法生成合法的矩阵配置。
正确实现配置
name: Build

on:
  push:
    tags:
      - "*"
  workflow_dispatch:
    inputs:
      product:
        description: "Product"
        default: "yellow"
      limit:
        description: "Limit"
        default: "50"

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        product: ${{ github.event_name == 'push' && fromJSON('["yellow", "green", "black"]') || fromJSON(format('["{0}"]', github.event.inputs.product)) }}
        limits: ${{ github.event_name == 'push' && fromJSON('[10, 20, 50, 100]') || fromJSON(format('[{0}]', github.event.inputs.limit)) }}

    steps:
      - uses: actions/checkout@v2
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      # 其余原有步骤保持不变
      ...
逻辑说明
  • 用github.event_name判断触发来源:
    • 当触发事件为push(tag推送场景),直接解析预定义的全量数组作为矩阵维度值,执行全量构建
    • 当触发事件为workflow_dispatch(手动触发场景),通过format函数将输入的单个值拼接为数组格式的字符串,再通过fromJSON转换为合法数组,满足matrix的类型要求,仅构建指定配置的产物
  • limits维度手动传入时没有加引号,会自动解析为数字类型,符合原有逻辑的参数要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:09:06