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

如何让GitHub重试失败任务时自动重跑其依赖任务?

问题原因

GitHub Actions的「仅重试失败任务」功能是仅针对选中的单个任务重新执行,不会自动触发其依赖的上游任务——哪怕上游任务配置了if: always()也没用,这是该功能的默认设计逻辑。

解决方案

方案一:将扩容/缩容逻辑整合到测试任务中(最直接可靠)

把原本独立的scale_up任务步骤,直接移到test_playwright任务的开头作为前置操作;同时在测试步骤后添加缩容逻辑,用if: always()确保无论测试成功还是失败,最终都会执行缩容。这样每次重试测试任务时,都会自动完成「扩容→测试→缩容」的完整流程。

修改后的配置示例:

test_playwright:
    name: 'test (playwright)'
    needs:
      - deploy
    runs-on:
      - self-hosted
      - contra-general-purpose
    steps:
      - name: checkout repository
        uses: actions/checkout@v3
      # 测试前先扩容
      - name: scale up contra-api
        run: kubectl scale deployment/gaia-review-contra-api --replicas 5
      # 原有测试步骤
      ...
      # 测试结束后缩容,always()确保无论测试成败都执行
      - name: scale down contra-api
        if: always()
        run: kubectl scale deployment/gaia-review-contra-api --replicas 1 # 替换为你的默认副本数

方案二:放弃「仅重试失败任务」,重新运行整个工作流

如果必须保留独立的scale_up任务,那就不要使用「仅重试失败任务」选项,而是选择重新运行整个工作流。这种情况下,scale_up会因为needs: deploy和if: always()的配置,在每次工作流启动时自动执行,确保测试前完成基础设施扩容。

缺点是会重新运行所有任务(包括之前已成功的deploy等),适合对运行成本不敏感的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:23:24