Actions artifacts 怎样设置产物保留期
来源:17golang原创
时间:2026-10-25 11:45:31 423浏览 收藏
测试报告下载链接很快失效,或者临时构建产物一直占着存储空间,通常需要重新安排 Actions artifacts 的保留期。先给仓库定一个默认期限,再对短期报告单独设置天数,后续维护更清楚。本文以 GitHub.com 上虚构的 demo-team/report-demo 仓库说明,界面配图为原创操作示意,未实际修改任何仓库。
先准备报告目录与期限表
准备一个已有工作流,并确认生成报告的步骤会在 runner 上写出 reports/ 目录。上传 action 负责打包已有文件,不会替你运行测试或生成报告。准备工作还包括仓库管理权限;只有下载需求的读者不需要修改仓库设置。
| 对象 | 示例期限 | 配置位置 |
|---|---|---|
| 普通构建产物 | 30天 | 仓库默认设置 |
| 临时测试报告 | 7天 | 上传步骤 retention-days |
| 已经上传的旧报告 | 保留原有到期安排 | 本次修改不追溯 |
这张表是示例方案,不是 GitHub 的强制推荐期限。先按团队实际取证、复查与交付需求决定天数,长期交付文件应安排合适的归档位置,避免把临时产物链接当永久下载地址。
1. 在仓库设置保存默认保留天数
打开仓库,进入 Settings → Actions → General,找到 Check, workflow run, status, artifact and log retention 区域,在天数字段填入 30,再点击 Save。当前设置区域同时涉及工作流运行、日志等对象,调整前应确认团队对这些记录的保存需求。

完成标志是保存后字段仍显示目标天数,且页面没有权限或范围错误。不要只输入后就关闭页面。若找不到设置入口,先确认自己进入的是仓库设置,以及账号是否具备相应管理权限。
仓库默认保留期通常为90天。公共仓库允许1至90天,私有仓库可配置1至400天,同时受组织或企业的上限约束。保存新值只影响之后创建的相关对象,不能据此推断已有报告的到期日已经改变。
2. 映射上传参数并下载新产物
把下列片段放进已有工作流 job 的 steps,排在生成报告的步骤之后。此处使用官方教程中的 upload-artifact@v4 形式说明 GitHub.com 的参数;它不是完整工作流,也不适用于直接照搬到 GitHub Enterprise Server。
# 放在已有 job 的 steps 中,且位于生成报告的步骤之后
- name: 上传测试报告
uses: actions/upload-artifact@v4
with:
# 用固定名称识别本次运行的产物
name: test-report
# 指向前一步实际生成的文件目录
path: reports/
# 本示例保留七天,须处于管理员允许范围内
retention-days: 7
# 目录没有文件时明确报错,避免误认为上传完成
if-no-files-found: error
提交前逐项预览:name 对应下载列表里的名称,path 对应 runner 上已有文件,retention-days 对应本次上传的期限。示例的7天应处于仓库及上级策略允许范围内。不要用本地电脑上的绝对路径替换 runner 的报告目录。
保存并提交工作流修改后,按仓库原有触发方式启动一次新的运行。等待上传步骤成功,再进入仓库 Actions → 对应工作流 → 新运行名称,滚动到运行摘要的 Artifacts 区域,点击 test-report 下载。

完成标志是新运行的上传步骤成功、列表出现 test-report,并且下载解压后包含预期报告文件。图中的运行与文件均为示例,没有代表本文实际执行结果。下载需登录并拥有仓库读取权限,产物也必须仍在有效期内。
若上传步骤提示没有文件,回到报告生成步骤确认目录、工作目录与文件输出;若下载列表为空,确认打开的是修改后的那次运行。不能仅凭工作流整体显示成功,就认定某个预期目录已经上传。
常见疑问与完成清单
retention-days 填0能永久保存吗?不能。0表示采用仓库默认保留设置;省略该参数也使用默认策略。需要长期留存的报告,应另行规划归档和访问权限。
把默认值从30改为7,会马上删除旧产物吗?不会按这次修改追溯重算旧产物。清理旧文件是另一项操作,不能把修改默认值当成即时释放空间的动作。
为什么写入更大的天数仍然失败?先检查仓库类型和组织、企业策略,再调整上传参数。不要假定私有仓库必然允许任意天数,也不要用多个上传步骤试图绕开管理上限。
最终核对三件事:仓库默认值已保存;新上传步骤明确使用7天或有意继承默认值;新运行的产物可以下载且内容正确。这样才能把“改了配置”落实到“新产物按计划生成并可用”。
官网入口:https://github.com/
仓库设置文档:https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository
上传参数与示例:https://docs.github.com/en/actions/tutorials/store-and-share-data;https://github.com/actions/upload-artifact
下载文档:https://docs.github.com/en/actions/how-tos/manage-workflow-runs/download-workflow-artifacts
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
465 收藏
-
150 收藏
-
499 收藏
-
418 收藏
-
459 收藏
-
372 收藏
-
410 收藏
-
187 收藏
-
100 收藏
-
490 收藏
-
399 收藏
-
477 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习