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

GitHub Action阶段仅在前序阶段失败时触发的配置问题

GitHub Actions 前序阶段失败时触发重跑的正确配置

你当前的配置问题出在some-smoke-test-rerun阶段的条件判断写法错误:needs.steps.some-smoke-test-result.outcome是无效的,因为needs对象指向的是依赖的阶段(job),而非阶段内的步骤(steps)。

正确配置方案

修改some-smoke-test-rerun的if条件,使用needs.<job-name>.result来获取前序阶段的执行状态,同时增加跳过判断避免误触发:

some-smoke-test-result:    
    name: Parse and analyze test results smoke test
    needs: [some-smoke-test]
    if: needs.some-smoke-test.outputs.some-id != ''
    runs-on: ${{inputs.runner-tag}}
    steps:
      - name: parse-test-result
        id: parse-test-result
        uses: some/some-actions/some-results@v1.5.0
        with:
          testarena-id: ${{ needs.some-smoke-test.outputs.some-id }}
  
some-smoke-test-rerun:
    name: Rerun some smoke test
    needs: [some-smoke-test, some-smoke-test-result]
    if: always() && needs.some-smoke-test-result.result == 'failure' && needs.some-smoke-test-result.result != 'skipped'

关键说明

  1. 阶段状态获取:needs.some-smoke-test-result.result是获取前序阶段最终执行状态的正确方式,可选值包括success、failure、cancelled、skipped
  2. 跳过判断:因为some-smoke-test-result阶段有if前置条件,当条件不满足时该阶段会被标记为skipped,增加needs.some-smoke-test-result.result != 'skipped'可以避免这种情况下触发重跑
  3. 保留always():确保即使其他依赖阶段失败,该阶段的条件判断逻辑仍能正常执行(若不添加always(),当依赖阶段失败时,当前阶段会被直接跳过,不会执行条件判断)

内容的提问来源于stack exchange,提问作者Sven van den Boogaart

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 15:22:08