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

GitHub Actions工作流中是否支持向自定义子动作传递steps子步骤?

结论先行

GitHub Actions 原生不支持你示例中在uses的with参数下直接嵌套子步骤数组的写法,with字段仅支持传递标量类型(字符串、数字、布尔值)的参数,无法直接识别结构化的步骤配置。但你需要的「重建缓存后立刻上传、不依赖post阶段」的缓存动作完全可以实现,可选实现路径如下:

可行实现方案

方案1:基于拆分的缓存动作封装Composite Action(最推荐)

官方actions/cache已经拆分出独立的restore、save子动作,支持你完全自定义缓存的生命周期,你可以直接基于这两个子动作封装Composite Action,支持用户传入重建指令即可:
以下是你的自定义缓存动作的action.yml示例:

name: '即时缓存动作'
description: '重建完成立刻上传缓存,不使用后置post阶段'
inputs:
  cache-path:
    description: '待缓存的目录路径'
    required: true
  cache-key:
    description: '缓存匹配key'
    required: true
  rebuild-command:
    description: '缓存未命中时执行的重建脚本'
    required: true
runs:
  using: "composite"
  steps:
    - name: 尝试拉取已有缓存
      id: cache-restore
      uses: actions/cache/restore@v3
      with:
        path: ${{ inputs.cache-path }}
        key: ${{ inputs.cache-key }}
    - name: 执行缓存重建逻辑
      if: steps.cache-restore.outputs.cache-hit != 'true'
      shell: bash
      run: ${{ inputs.rebuild-command }}
    - name: 立即上传新生成的缓存
      if: steps.cache-restore.outputs.cache-hit != 'true'
      uses: actions/cache/save@v3
      with:
        path: ${{ inputs.cache-path }}
        key: ${{ inputs.cache-key }}

用户侧的使用写法如下:

steps:
  - uses: 你的自定义动作仓库@版本号
    with:
      cache-path: ./build
      cache-key: ${{ runner.os }}-build-${{ hashFiles('src/**') }}
      rebuild-command: |
        npm install
        npm run build
  # 后续步骤修改环境不会影响已经上传的缓存内容

方案2:序列化步骤配置自行解析执行(支持多子步骤场景)

如果你确实需要支持用户传入多个独立子步骤,可以要求用户把步骤序列化为JSON字符串通过with传递,你在动作内部写解析脚本遍历执行:
用户侧写法示例:

steps:
  - uses: 你的自定义动作仓库@版本号
    with:
      cache-path: ./test-env
      cache-key: ${{ runner.os }}-test-env
      steps: '[{"run": "apt update && apt install -y nginx"}, {"run": "cp ./test/config /etc/nginx/nginx.conf"}, {"run": "nginx -t"}]'

你可以在动作内部用Node.js/Python等脚本解析这个JSON字符串,逐个执行对应指令,同时自己处理步骤错误捕获、环境变量传递等逻辑,所有步骤执行完成后立刻上传缓存即可。

方案3:封装为可复用工作流

如果你的场景逻辑较重、需要支持更复杂的步骤配置,也可以把整个缓存+重建流程封装为可复用工作流,通过参数控制不同步骤的执行逻辑,不过灵活度低于自定义Action。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:54:04