GitHub Actions 怎么手动重跑单个失败任务
来源:17golang原创
时间:2026-10-06 00:24:32 162浏览 收藏
GitHub Actions 可以只重跑一个具体失败的 job:进入失败的 workflow run,在左侧 Jobs 区域找到目标 job,点击它旁边的重跑入口,按需启用调试日志,再确认 Re-run jobs。需要特别注意的是,这并不一定只启动一个节点——依赖该 job 的下游 jobs 也会一起重新运行。
- Re-run all jobs:重跑整个 workflow run。
- Re-run failed jobs:重跑所有失败 jobs 及其依赖者。
- 具体 job 旁的重跑入口:重跑选中的 job 及依赖它的下游 jobs。
官方地址:https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs
准备运行记录:确认权限和重跑范围
先记下仓库、workflow 名称、失败 run、目标 job,以及它是否有下游依赖。GitHub 官方说明要求操作者拥有仓库写权限;workflow 或 job 可以在首次运行后的 30 天内重跑,且日志不能已经超过保留期限。一次 workflow run 最多允许重跑 50 次,这个次数同时计算整次重跑与部分 job 重跑。
如果目标是 test,而 deploy 通过 needs: test 依赖它,那么选择重跑 test 时,新的 attempt 会包含 test 和 deploy。此前已成功且不依赖它的 build 不需要再次执行,其输出仍可供新的 attempt 使用。
| 你的目标 | 应该选的入口 | 实际影响 |
|---|---|---|
| 只修复一个失败 job | Jobs 区域中该 job 的重跑入口 | 该 job 与依赖它的下游 jobs |
| 一次处理全部失败项 | Re-run failed jobs | 所有失败 jobs 及其依赖者 |
| 从头验证整条流水线 | Re-run all jobs | workflow 中全部 jobs |
第一步:选择 Actions 入口和失败 run
- 打开目标仓库主页,点击仓库名称下方的 Actions 标签。
- 在左侧 workflow 列表中选择目标 workflow,例如 Build and test。
- 在 Workflow runs 列表中点击红色 Failed 的那次运行名称。
成功进入后,页面应显示 workflow run summary;左侧能看到 Jobs 区域,中央能看到提交、分支、触发时间和运行状态。不要停留在 workflow runs 列表页,因为单个 job 的重跑入口在具体 run 里面。

第二步:映射并选中要重跑的具体 job
- 在左侧 Jobs 区域找到红色失败状态的 job。
- 先点击 job 名称,确认中央日志中的失败步骤就是本次要修复的目标。
- 回到该 job 行,点击其旁边的重跑图标或操作入口,而不是右上角的 Re-run failed jobs。
这一步的判断标准很简单:你应当看到目标从“整个 run”缩小到一个明确 job,例如 test。如果页面只提供右上角下拉菜单中的 Re-run failed jobs,先检查是否选中了具体 job,或当前账号是否有仓库写权限。

第三步:预览影响范围并提交重跑
打开重跑确认层后,核对显示的目标 job。若上一次失败信息不足,可以勾选 Enable debug logging。它会为本次重跑启用 runner diagnostic logging 和 step debug logging,适合定位环境、表达式、权限或 runner 侧问题;正常情况下不要长期默认开启,以免日志变得过于冗长。
- 确认目标 job 名称无误。
- 根据排障需要决定是否启用 Enable debug logging。
- 点击主按钮 Re-run jobs 提交。

重跑不是用当前操作者身份重新触发一次新事件。GitHub 会继续使用原始事件的 GITHUB_SHA 和 GITHUB_REF,权限上下文也取自最初触发 workflow 的 actor,而不是点击重跑的人。这意味着:如果代码已经在后续提交中修复,直接重跑旧 attempt 仍然针对原来的提交;想验证新代码,应让新提交触发新的 workflow run。
第四步:核对新的 attempt 和下游任务
提交后,页面会进入新的 attempt。先观察目标 job 是否从 queued、in progress 进入 success,再确认依赖它的下游 jobs 是否按预期启动。此前成功 jobs 的输出、原始运行产生的 artifacts,以及此前已通过的 deployment protection rules,官方说明都可在相应重跑中继续使用。
- 查看目标 job 顶部状态和失败步骤是否消失。
- 展开新的日志,确认修复点而不是偶然通过。
- 检查依赖目标 job 的下游 jobs 是否重新运行并完成。
- 需要对比时,在运行名称右侧打开 Latest 下拉菜单,切换到之前的 attempt。

CLI 方式:已知 JOB_ID 时直接重跑
如果团队日常使用 GitHub CLI,可以通过具体 JOB_ID 执行同一类操作。注意 --failed 是“所有失败 jobs”,而 --job 才是“某个具体 job”。
# 查看最近的 workflow runs,先取得目标 RUN_ID gh run list --workflow "Build and test" # 查看某次运行的 job 信息,从输出中确认目标 JOB_ID gh run view RUN_ID # 只重跑指定 JOB_ID;其依赖者仍可能随之运行 gh run rerun --job JOB_ID # 需要更详细排障信息时,为本次重跑启用调试日志 gh run rerun --job JOB_ID --debug
CLI 命令提交后,可以用 gh run watch 观察运行进度;这属于替代入口,不影响网页操作中的范围判断原则。
异常处理:为什么看不到单个 job 的重跑入口
- 没有写权限:只有拥有仓库写权限的人才能重跑 workflow 或 job。
- 运行过旧:首次运行超过 30 天后不能再重跑;日志超过保留期限也无法重跑相应 jobs。
- 已达到次数限制:同一 workflow run 的全部与部分重跑合计最多 50 次。
- 选错页面:必须先进入具体 workflow run summary,再从 Jobs 区域选择 job。
- 把 step 当 job:GitHub 支持重跑 job,不支持只重跑 job 内的单个 step。
结果核对清单
| 核对项 | 正确状态 | 异常时怎么做 |
|---|---|---|
| 目标范围 | 只选中一个具体 job | 返回 Jobs 区域重新选择 |
| 代码版本 | 仍是原始 GITHUB_SHA 与 GITHUB_REF | 要验证新提交时触发新 run |
| 目标 job | 新 attempt 中变为 success | 对比前后日志与失败步骤 |
| 下游 jobs | 依赖目标 job 的节点重新运行 | 检查 needs 条件和跳过原因 |
| 历史记录 | Latest 菜单可切换旧 attempt | 确认日志仍在保留期 |
相关问题
单个 job 重跑后,依赖它的 deploy 会不会一起跑
会。官方说明中,重跑一个具体 job 时,依赖它的 jobs 也会在新的 workflow run attempt 中启动。
可以只重跑失败 step 吗
不可以。重跑粒度是 job,不是 job 内部的 step。若想缩短成本,需要重新拆分 workflow 的 job 边界。
为什么修复代码后重跑仍然报原来的错
因为重跑沿用最初事件的 GITHUB_SHA 和 GITHUB_REF。后续提交不会自动替换旧 run 的代码版本,应触发一条新的 workflow run。
重跑失败 jobs 和重跑单个 job 有什么区别
Re-run failed jobs 会选择所有失败 jobs;单个 job 入口只选择目标 job,但两者都会带上各自依赖关系中的下游 jobs。
-
455 收藏
-
Golang · Go教程 | 4个月前 | 超时控制 · 故障排查 · Go教程 · 后端工程 · Golang实战 · HTTP客户端 · golang Go 性能优化 net/http context Transport 超时 http.Client 生产实践205 收藏
-
Golang · Go教程 | 2个月前 | CI/CD · gitHub actions · Go教程 · 持续集成 · Go 持续集成 CI Go test GitHub Actions self-hosted runner 自托管 runner340 收藏
-
Golang · Go教程 | 2个月前 | 并发 · HTTP · 性能优化 · 故障排查 · Go教程 · Go Goroutine 连接复用 pprof http.Client close Response.Body201 收藏
-
Golang · Go教程 | 2个月前 | golang · JSON · 故障排查 · Go教程 · 接口设计 · JSON Go 接口兼容性 DisallowUnknownFields 严格解码174 收藏
-
430 收藏
-
文章 · 软件教程 | 8小时前 | 开发环境 · vs code · VS Code Docker Compose Dockerfile devcontainer.json Dev Containers368 收藏
-
345 收藏
-
130 收藏
-
199 收藏
-
372 收藏
-
文章 · 软件教程 | 23小时前 | 命令行 · 效率工具 · github · 开发工具 · 软件教程 · 位置参数 命令别名 GitHub CLI gh alias set shell alias404 收藏
-
378 收藏
-
360 收藏
-
395 收藏
-
287 收藏
-
264 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习