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

如何在GitHub Actions中实现失败时提前终止剩余任务?

GitHub CI 实现失败时提前终止剩余 Actions

完全可以实现,根据你的CI场景(串行/并行),有两种常用解决方案:

方案一:通过Job依赖关系(串行执行场景)

如果你的两个检查可以改成串行执行(先跑第一个,再跑第二个),直接用needs配置依赖就能实现:

  • 在第二个Job的配置里加上needs: [第一个Job的ID],这样只要第一个Job失败,第二个Job会直接被标记为「跳过」,不会启动执行。
  • 示例配置:
jobs:
  first-check:
    runs-on: ubuntu-latest
    steps:
      - name: 执行第一个检查
        run: # 这里写你的检查命令

  second-check:
    runs-on: ubuntu-latest
    needs: first-check # 依赖第一个Job的执行结果
    steps:
      - name: 执行第二个检查
        run: # 这里写你的检查命令

方案二:主动取消运行中的Job(并行执行场景)

如果必须保持两个检查并行执行,就得借助GitHub API主动终止还在运行的Job,具体步骤如下:

  1. 先给Workflow的GITHUB_TOKEN添加actions: write权限,在Workflow开头配置:
permissions:
  actions: write
  1. 在第一个Job中添加失败触发的步骤,调用API取消当前Workflow里的其他运行中Job:
jobs:
  first-check:
    runs-on: ubuntu-latest
    steps:
      - name: 执行第一个检查
        id: first-step
        run: # 这里写你的检查命令,失败时会触发后续步骤
      - name: 失败时取消其他Job
        if: failure()
        uses: actions/github-script@v6
        with:
          script: |
            // 获取当前Workflow的所有Job
            const jobs = await github.rest.actions.listJobsForWorkflowRun({
              owner: context.repo.owner,
              repo: context.repo.repo,
              run_id: context.runId
            });
            // 筛选出当前Job以外的运行中Job
            const runningJobs = jobs.data.jobs.filter(job => 
              job.id !== context.jobId && job.status === 'in_progress'
            );
            // 逐个取消这些Job
            for (const job of runningJobs) {
              await github.rest.actions.cancelWorkflowRunJob({
                owner: context.repo.owner,
                repo: context.repo.repo,
                job_id: job.id
              });
            }

  second-check:
    runs-on: ubuntu-latest
    steps:
      - name: 执行第二个检查
        run: # 这里写你的检查命令

注意事项

  • 必须确保GITHUB_TOKEN拥有actions: write权限,否则无法调用取消Job的API。
  • 如果第二个Job已经执行完成,取消操作不会产生任何影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:25:20