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

如何获取GitHub复合动作的执行结果?

问题分析与解决方案

你碰到的steps.first.outcome为空的问题,核心原因其实是GitHub复合动作的默认行为限制:当某个步骤失败且没有设置continue-on-error: true时,整个复合动作会直接终止,后续步骤(哪怕加了always()条件)根本没机会执行。这就导致最后一步永远读不到第一步的outcome值——动作在第一步失败后就停了,根本走不到最后一步。

要解决这个问题,你需要做两个关键调整:

1. 给第一步添加continue-on-error: true

这个设置会让复合动作在第一步失败后继续执行后续步骤,这样第一步的执行结果(failure或success)才会被正确记录到steps.first.outcome中,后续步骤才能读取到这个值。

2. 优化最后一步的条件判断

保留always()确保最后一步不会被任何前置步骤的状态跳过,同时明确判断第一步的结果为失败时才执行。

修改后的完整配置如下:

runs:
  using: "composite"
  steps:
    - name: 'First step'
      id: first
      run: some-command
      shell: bash
      continue-on-error: true  # 关键:允许动作在第一步失败后继续执行
    # [some more steps]
    - name: 'Last step'
      if: ${{ always() && steps.first.outcome == 'failure' }}
      run: another-command
      shell: bash

额外说明

如果你需要中间步骤的失败也不影响最后一步执行,可以给中间步骤也加上continue-on-error: true;或者保持中间步骤的默认失败终止行为,但此时如果中间步骤失败,最后一步依然会因为always()执行——但此时steps.first.outcome依然是有效的,因为第一步已经完成并记录了结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 23:02:32