当前位置:首页 > 文章列表 > 文章 > 软件教程 > GitHub Actions 怎么手动重跑单个失败任务

GitHub Actions 怎么手动重跑单个失败任务

来源:17golang原创 2026-10-06 00:24:32 0浏览 收藏

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 使用。

你的目标应该选的入口实际影响
只修复一个失败 jobJobs 区域中该 job 的重跑入口该 job 与依赖它的下游 jobs
一次处理全部失败项Re-run failed jobs所有失败 jobs 及其依赖者
从头验证整条流水线Re-run all jobsworkflow 中全部 jobs

第一步:选择 Actions 入口和失败 run

  1. 打开目标仓库主页,点击仓库名称下方的 Actions 标签。
  2. 在左侧 workflow 列表中选择目标 workflow,例如 Build and test。
  3. 在 Workflow runs 列表中点击红色 Failed 的那次运行名称。

成功进入后,页面应显示 workflow run summary;左侧能看到 Jobs 区域,中央能看到提交、分支、触发时间和运行状态。不要停留在 workflow runs 列表页,因为单个 job 的重跑入口在具体 run 里面。

代码托管平台 Actions 标签、workflow 侧栏和失败 workflow run 列表的原创界面说明图
图1:从 Actions 列表进入失败 workflow run 的原创界面操作示意图,不是 GitHub 截图。

第二步:映射并选中要重跑的具体 job

  1. 在左侧 Jobs 区域找到红色失败状态的 job。
  2. 先点击 job 名称,确认中央日志中的失败步骤就是本次要修复的目标。
  3. 回到该 job 行,点击其旁边的重跑图标或操作入口,而不是右上角的 Re-run failed jobs。

这一步的判断标准很简单:你应当看到目标从“整个 run”缩小到一个明确 job,例如 test。如果页面只提供右上角下拉菜单中的 Re-run failed jobs,先检查是否选中了具体 job,或当前账号是否有仓库写权限。

Workflow run summary 的 Jobs 列表中选中失败 test job 与重跑入口的原创界面说明图
图2:在 Jobs 区域锁定单个失败 job 的原创界面操作示意图,不是 GitHub 截图。

第三步:预览影响范围并提交重跑

打开重跑确认层后,核对显示的目标 job。若上一次失败信息不足,可以勾选 Enable debug logging。它会为本次重跑启用 runner diagnostic logging 和 step debug logging,适合定位环境、表达式、权限或 runner 侧问题;正常情况下不要长期默认开启,以免日志变得过于冗长。

  1. 确认目标 job 名称无误。
  2. 根据排障需要决定是否启用 Enable debug logging。
  3. 点击主按钮 Re-run jobs 提交。
Re-run jobs 确认层、Enable debug logging 选项与提交按钮的原创界面说明图
图3:确认目标 job 并按需开启调试日志的原创界面操作示意图,不是 GitHub 截图。

重跑不是用当前操作者身份重新触发一次新事件。GitHub 会继续使用原始事件的 GITHUB_SHA 和 GITHUB_REF,权限上下文也取自最初触发 workflow 的 actor,而不是点击重跑的人。这意味着:如果代码已经在后续提交中修复,直接重跑旧 attempt 仍然针对原来的提交;想验证新代码,应让新提交触发新的 workflow run。

第四步:核对新的 attempt 和下游任务

提交后,页面会进入新的 attempt。先观察目标 job 是否从 queued、in progress 进入 success,再确认依赖它的下游 jobs 是否按预期启动。此前成功 jobs 的输出、原始运行产生的 artifacts,以及此前已通过的 deployment protection rules,官方说明都可在相应重跑中继续使用。

  1. 查看目标 job 顶部状态和失败步骤是否消失。
  2. 展开新的日志,确认修复点而不是偶然通过。
  3. 检查依赖目标 job 的下游 jobs 是否重新运行并完成。
  4. 需要对比时,在运行名称右侧打开 Latest 下拉菜单,切换到之前的 attempt。
GitHub Actions 风格 workflow Attempt 2、test 成功、deploy 运行中与历史 attempt 入口的原创界面结果说明图
图4:通过新 attempt、下游状态和日志核对重跑结果的原创界面结果示意图,不是 GitHub 截图。

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。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Lanerc动漫支持哪些平台?安卓、iOS入口与版本信息核对说明Lanerc动漫支持哪些平台?安卓、iOS入口与版本信息核对说明
上一篇
Lanerc动漫支持哪些平台?安卓、iOS入口与版本信息核对说明
蛙蛙漫画更新时间是哪一项?公开资料页更新字段与版本号说明
下一篇
蛙蛙漫画更新时间是哪一项?公开资料页更新字段与版本号说明
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    343次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    403次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    404次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    363次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    185次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码