GitHub Actions 将统一清理旧检查记录:CI 保留期要重新设计

很多团队把 GitHub Actions 当成一条只负责通过或失败的流水线,却忽略了它同时也是项目的历史记录。一次检查失败的日志、一个工作流的运行结果、一条提交状态,往往会在几周后成为排查回归问题、复盘发布事故或确认变更范围的证据。

8 月 27 日,GitHub 宣布了一项会改变这套历史记录生命周期的调整。从 2026 年 10 月 1 日起,检查结果、工作流运行记录和状态将跟随 Actions 中已经用于日志与构建产物的保留设置清理。此前,这三类记录通常会保留 400 多天,不受仓库中日志和构建产物保留期的影响;新规则的默认保留期是 90 天。

这不是一个需要立刻修改每个工作流的语法变更,却是一次值得提前处理的数据治理变化。团队需要重新回答一个问题:哪些 CI 信息只服务于近期开发,哪些信息必须脱离 GitHub Actions,进入长期可检索的发布或审计系统。

这次调整具体改变了什么

GitHub 的公告给出了四个关键点。

五类数据将使用同一个保留设置

新的设置会同时覆盖以下内容:

  • 检查结果,包括代码检查和测试检查的结果;
  • 工作流运行记录;
  • 提交状态;
  • 工作流日志;
  • 工作流生成的构建产物。

之前的设置主要控制日志和构建产物,而检查结果、工作流运行记录和状态可以保留 400 多天。10 月 1 日之后,超过仓库、组织或企业级配置保留期的相关数据,会按照同一套规则自动清理。GitHub 也会更新设置页面的名称,让它明确反映这五类数据的范围。

仓库设置仍然受组织和企业上限约束

保留期不是仓库管理员想设多久就设多久。仓库可以提高自己的保留期,但不能超过组织和企业层面设置的上限。对于公开仓库,检查结果、工作流运行记录和状态的最长保留期是 90 天,与日志和构建产物的现有限制保持一致。

这意味着公开项目不能把 GitHub Actions 当成永久的 CI 归档库。如果项目需要保存超过 90 天的发布证据、测试趋势或合规记录,就要在保留期到达之前导出到其他存储或专门的分析系统。

这次清理不会追溯恢复数据

公告明确说明,这项变化不是追溯性的。调整保留设置不会恢复已经因为旧策略被清理的数据,也不会把过去缺失的检查记录重新补回来。

因此,团队在 10 月 1 日之前导出需要长期保存的内容,比事后尝试寻找旧运行记录更可靠。尤其是已经关闭的拉取请求、历史发布和偶发失败,它们通常不会在日常开发中被及时整理。

存储计费只涉及其中两类数据

检查结果、工作流运行记录和状态的元数据本身不计入 Actions 存储费用,但与它们关联的日志和构建产物会计入可计费的 Actions 存储。保留期缩短后,过去长期积累的日志和构建产物可能更快清理,从而降低存储用量;如果把保留期调长,存储费用也可能随之增加。

这里要区分两个概念:数据能不能在页面上查到,和数据是否占用存储空间,不是同一件事。新的生命周期规则同时影响可见性和存储管理,但计费仍主要落在日志和构建产物上。

为什么 CI 历史记录值得单独规划

开发阶段的 CI 记录通常有很短的使用周期。一次代码格式检查的日志,可能只需要保留到拉取请求合并;一次依赖升级的测试结果,可能在几个版本之后就没有多少价值。

发布和运维场景则不同。下面几类问题经常需要回看较久以前的流水线信息:

场景 需要回答的问题 适合保留的证据
回归排查 哪个提交开始出现失败,失败发生在哪个步骤 提交、检查名称、失败摘要和关键日志
发布追踪 某个版本使用了什么代码和构建环境 提交 SHA、版本号、构建元数据和产物摘要
依赖审计 某段时间内项目是否完成过安全检查 检查结论、依赖快照和扫描时间
测试趋势 哪些测试持续变慢或不稳定 测试名称、耗时、失败率和时间序列
事故复盘 自动化流程当时做了什么 工作流版本、输入参数、关键输出和人工处置记录

这些信息不一定要把完整日志永久放在 GitHub 上。更合理的做法,是保留一份短而稳定的摘要,把大体积日志、测试报告和发布包存到与用途匹配的系统中。CI 页面适合近期协作,长期分析则应该有自己的数据入口。

从“保留天数”转向“数据分层”

这项变化最值得借鉴的地方,是它提醒我们不要用一个数字处理所有 CI 数据。可以先把流水线输出分成三层。

第一层是临时反馈。比如代码格式检查、普通单元测试和开发分支构建,它们主要帮助当前拉取请求快速迭代,保留 30 到 90 天通常已经足够。具体天数仍应结合项目节奏和仓库策略确认。

第二层是工程证据。集成测试、性能基准、安全扫描和生产构建,需要在较长时间内支持排障和比较。除了让 Actions 保留近期记录,还应该把结果中的提交 SHA、工具版本、运行参数、检查结论和关键摘要写入可检索的存储。

第三层是发布与合规档案。正式发布包、依赖清单、签名信息和审批记录,不应只依赖 Actions 运行页面。它们应该进入版本仓库、制品库或专门的归档系统,并明确保留周期、访问权限和删除规则。

分层之后,Actions 的保留设置就不再承担所有历史管理责任。它负责近期开发反馈,其他系统负责长期证据,数据使用者也更容易找到适合自己的入口。

对现有工作流的三个影响

旧的失败记录可能比预期更早消失

如果仓库当前设置的日志和构建产物保留期低于 90 天,那么 10 月 1 日后,相关检查结果和工作流运行记录也会按照这个更短的周期清理。团队不能只看页面上默认显示的数字,还要确认仓库、组织和企业层面最终生效的配置。

对经常处理长期支持版本的项目来说,这个变化尤其明显。维护者可能在几个月后收到一个回归报告,却已经无法从 Actions 找到当时的完整执行记录。此时,提交历史只能告诉你改了什么,不能告诉你当时的构建环境和测试输出。

发布流程要保存可验证的构建信息

长期发布追踪不应依赖一个可能过期的工作流页面。每次正式构建至少可以记录以下信息:

1
2
3
4
5
6
7
版本号
提交 SHA
工作流文件版本
运行环境和工具版本
依赖锁定文件摘要
构建产物摘要
测试与安全检查结论

这些字段比一份完整的终端日志更适合长期查询。需要深入排查时,再根据摘要中的运行编号、提交和产物标识寻找可用的详细资料,或从外部归档中恢复。

测试趋势不能只靠回看工作流页面

如果团队想观察测试耗时、失败率或不稳定测试,定期读取 Actions 运行页面并不是长久方案。数据超过保留期后,历史样本会断掉;即使记录仍在,按页面逐条查看也不利于统计。

更稳妥的做法是在工作流结束时输出结构化测试结果,提取测试名称、耗时、失败原因、提交 SHA 和运行时间,再写入指标系统或对象存储。Actions 负责触发和执行,趋势系统负责长期聚合。

10 月 1 日前可以做什么

这次变更距离生效还有一段时间,建议按项目重要程度分批处理。

  1. 盘点依赖历史记录的流程。 找出需要回看超过 90 天的发布、审计、长期支持和测试趋势场景,记录它们依赖的是检查结果、日志还是构建产物。
  2. 查看最终保留设置。 分别检查仓库、组织和企业配置,确认实际保留期以及上层策略是否覆盖了仓库设置。
  3. 导出重要历史证据。 对已经关闭的发布和关键版本,提前保存提交 SHA、检查结论、测试摘要、构建产物摘要和必要日志。不要只保存一个可能失效的网页链接。
  4. 修改发布流水线。 让正式构建把版本、提交、依赖和产物摘要写入制品库或发布记录,保证未来即使 Actions 页面过期,仍能验证构建来源。
  5. 验证清理后的体验。 可以在非关键仓库中使用较短保留期进行观察,确认团队需要的信息是否都已经进入长期存储,再决定是否调整正式仓库策略。

如果某些资料需要保留超过公开仓库允许的上限,就不要把希望寄托在把仓库设置调到最大。提前归档才是可控的方案。

一项看似运维、实则影响开发体验的变化

GitHub 这次公告没有引入新的工作流语法,也不会改变一次构建怎样执行,却会改变开发者几个月后还能看到什么。CI 系统的价值不只在于给出当前结果,也在于为之后的排障、发布和复盘留下可用证据。

对个人项目,默认保留期可能已经够用;对长期维护的开源项目、企业服务和有审计要求的系统,应该把 Actions 当作短期执行平台,而不是唯一的历史数据库。把近期反馈留在 GitHub,把长期证据写进合适的归档系统,才能在存储成本、页面可用性和追溯能力之间取得平衡。

结语

从 2026 年 10 月 1 日开始,GitHub Actions 会让检查结果、工作流运行记录和状态跟随日志、构建产物一起进入保留周期。默认 90 天并不一定不够,但它迫使团队重新区分临时反馈和长期证据。

真正需要提前做的,不是盲目把所有保留时间调长,而是列清楚哪些信息会在未来被谁使用、需要保存多久、应该由哪个系统负责。这样,即使 Actions 清理掉旧页面,项目仍然保留能够解释一次构建和一次发布的关键事实。

参考资料

文章目录
  1. 1. 这次调整具体改变了什么
    1. 1.1. 五类数据将使用同一个保留设置
    2. 1.2. 仓库设置仍然受组织和企业上限约束
    3. 1.3. 这次清理不会追溯恢复数据
    4. 1.4. 存储计费只涉及其中两类数据
  2. 2. 为什么 CI 历史记录值得单独规划
  3. 3. 从“保留天数”转向“数据分层”
  4. 4. 对现有工作流的三个影响
    1. 4.1. 旧的失败记录可能比预期更早消失
    2. 4.2. 发布流程要保存可验证的构建信息
    3. 4.3. 测试趋势不能只靠回看工作流页面
  5. 5. 10 月 1 日前可以做什么
  6. 6. 一项看似运维、实则影响开发体验的变化
  7. 7. 结语
  8. 8. 参考资料
|