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

如何直接将GitHub复合动作输出转为作业输出?无需额外Run步骤

可以省略Run步骤直接将复合动作输出转为作业输出

当然可以,完全不需要额外的Run步骤来中转,只要在复合动作定义和工作流调用时做对应配置,就能直接把复合动作的输出转为调用步骤的输出,进而设置成作业输出。

步骤1:在复合动作中声明输出

首先要在复合动作的action.yml里,把内部步骤的输出暴露为动作本身的输出。比如:

# ./actions/my-compound-action/action.yml
name: '我的复合动作'
description: '带输出的复合动作示例'
outputs:
  action-result:
    description: '复合动作生成的结果'
    value: ${{ steps.gen-result.outputs.result }}  # 关联内部步骤的输出
runs:
  using: 'composite'
  steps:
    - name: 生成结果
      id: gen-result
      run: echo "result=hello-from-compound-action" >> $GITHUB_OUTPUT
      shell: bash

这里的核心是outputs字段:通过value把复合动作内部步骤的输出(steps.gen-result.outputs.result)映射为动作对外的输出(action-result)。

步骤2:在工作流中直接引用并设置作业输出

调用复合动作时,给步骤设置id,然后直接通过steps.<步骤ID>.outputs.<动作输出名>获取值,赋值给作业输出即可,不需要额外Run步骤:

jobs:
  upstream-job:
    runs-on: ubuntu-latest
    outputs:
      job-output: ${{ steps.call-compound.outputs.action-result }}  # 直接引用动作输出
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4

      - name: 调用复合动作
        id: call-compound
        uses: ./actions/my-compound-action

  # 下游作业可以直接使用上游作业的输出
  downstream-job:
    runs-on: ubuntu-latest
    needs: upstream-job
    steps:
      - name: 打印上游作业输出
        run: echo "上游作业传递的结果:${{ needs.upstream-job.outputs.job-output }}"
        shell: bash

关键原理

复合动作本身支持对外暴露输出,这些输出会直接成为调用该动作的步骤的输出属性。所以你可以在作业的outputs里直接引用,或者在当前作业的后续步骤中使用,完全跳过中间的Run中转步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:39:57