如何使用GitHub Actions存储和获取中等大小的私有文件?
GitHub Actions中测试依赖文件的存储与下载方案
场景与核心诉求
有一批压缩后总计5-10M的测试依赖文件,需要在GitHub Actions工作流中下载并用于测试,核心诉求为:
- 避免增大GitHub仓库体积
- 无需对这些文件进行版本控制
- 避免冗余存储
现有方案分析
1. 直接提交到仓库
不推荐。直接提交会持续增大仓库体积,每次更新文件都会在Git历史中留存冗余版本,完全不符合核心诉求。
2. Git Large File Storage (LFS)
推荐使用,适配需求:
- 主仓库仅存储文件指针,不会大幅占用仓库空间
- GitHub Actions中可自动拉取:使用
actions/checkout@v4时,只需添加lfs: true参数,即可在checkout阶段同步LFS文件 - 操作流程:
- 本地安装git-lfs工具,执行
git lfs install初始化 - 用
git lfs track "你的依赖文件路径/类型"指定要跟踪的文件 - 提交
.gitattributes和文件指针到仓库,大文件会自动上传到GitHub LFS服务器
- 本地安装git-lfs工具,执行
- 注意:5-10M的文件完全在GitHub LFS免费额度范围内,无需额外付费
3. Google Drive下载(通过GitHub Action)
可选方案,适合已有Google Drive存储习惯的场景:
- 可选用
google-drive-download-action这类第三方Action实现下载 - 配置要点:
- 从Google Drive文件共享链接中提取文件ID
- 若文件为私有,需在GitHub仓库Secrets中存储认证凭据(如服务账号密钥)
- 在工作流中调用Action,指定文件ID和本地下载路径
- 注意:公开共享的文件无需认证,配置更简单;私有文件需维护凭据,相对繁琐
补充推荐方案
GitHub Releases
- 把压缩后的依赖文件作为项目Release的附件上传
- 在GitHub Actions中用
curl/wget直接下载附件链接,或用actions/download-artifact类工具 - 优势:依托GitHub生态,更新文件只需上传新Release附件,灵活可控
对象存储服务(如AWS S3、阿里云OSS)
- 将文件上传到对象存储桶,设置公开读权限或通过IAM密钥授权访问
- 在GitHub Actions中使用云服务商官方CLI或第三方Action下载文件
- 优势:存储成本低,支持CDN加速,适合频繁更新的场景
GitHub Packages(通用包)
- 将压缩文件打包为通用包上传到GitHub Packages
- 在工作流中用
gh命令行工具下载包并解压使用 - 优势:整合GitHub权限体系,适合私有依赖管理
内容的提问来源于stack exchange,提问作者dfrankow
相关产品推荐
相关产品推荐

