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

如何在GitHub Actions中复用其他可重用工作流的输出?

如何在GitHub Actions可重用工作流之间传递输出值?

完全可以实现你的需求,但当前配置有几处需要调整,具体步骤如下:


1. 让生成CalVer的工作流(called-workflow1.yaml)暴露输出值

你现在的被调用工作流1只在步骤里生成了VERSION,但没把这个值暴露给调用它的主工作流。得在calver job里添加outputs字段,把步骤的输出映射为job级别的输出:

# called-workflow1.yaml
jobs:
  calver:
    name: Create CalVer tag
    outputs:
      VERSION: ${{ steps.calVer.outputs.VERSION }} # 把步骤的输出暴露为job输出
    steps:
      - name: Calver tag
        uses: StephaneBour/actions-calver@1.4.4
        if: ${{ github.ref == 'refs/heads/main' }}
        id: calVer
        with:
          date_format: "%Y-%m-%d"
          release: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}

2. 在主调用工作流中传递输出给第二个可重用工作流

主工作流里,call-workflow-calver job执行完成后,它的输出可以通过jobs.call-workflow-calver.outputs.VERSION获取。接下来要把这个值作为输入参数传递给call-workflow-echo:

# 主调用工作流
jobs:
  call-workflow-calver:
    uses: ./.github/workflows/called-workflow1.yaml
    secrets: inherit

  call-workflow-echo:
    needs: call-workflow-calver
    uses: ./.github/workflows/called-workflow2.yaml
    secrets: inherit
    with:
      image_version: ${{ jobs.call-workflow-calver.outputs.VERSION }} # 传递CalVer版本作为输入

3. 让第二个可重用工作流(called-workflow2.yaml)接收并使用输入

被调用工作流2需要先定义inputs字段,声明要接收的参数,之后就能在步骤里直接使用:

# called-workflow2.yaml
name: Called Workflow 2
on:
  workflow_call:
    inputs:
      image_version:
        type: string
        required: true # 设为true确保必须传值,也可根据需求改为false

jobs:
  echo-version:
    runs-on: ubuntu-latest
    steps:
      - name: Echo Image Version
        run: |
          echo "当前使用的镜像版本: ${{ inputs.image_version }}"

后续第三个部署工作流的处理逻辑

第三个负责部署的可重用工作流,同样按照这个模式来:

  1. 在主调用工作流里添加第三个job,依赖call-workflow-echo(或者直接依赖call-workflow-calver,只要确保顺序正确)
  2. 把jobs.call-workflow-calver.outputs.VERSION作为输入传递给第三个工作流
  3. 第三个工作流定义对应的inputs,在部署步骤中使用这个版本号

核心要点总结

  • 被调用工作流必须在job级别定义outputs,才能把内部步骤的输出暴露给外部
  • 主工作流通过jobs.<被调用job名称>.outputs.<输出字段>获取值
  • 接收值的被调用工作流必须通过workflow_call.inputs声明要接收的参数
  • 用needs字段确保job的执行顺序,避免值还没生成就被调用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:26:16