Github Actions 流程中上传的 Artifact 有大小限制吗?

2019-12-07 11:26:09 +08:00
 Smash

最近在用 Github Actions 做持续集成,目前打 tag 后会触发编译,Release 发布,编译产物上传到 Release 页面。

整个流程体验下来感觉 Gtihub Actions 还是个半成品,很多地方用户体验不是很好。

接下来想做 push 操作触发预编译流程,想在每次预编译完成后将编译产物上传,方便验证对应的 commit。

请问一下有熟悉 Github Actions 的老铁吗? Artifact 上传容量有限制吗?我 Google 了一下,发现貌似这块官方没有文档说明。也没有看到临时编译产物过期删除方面的文档。

4645 次点击
所在节点    问与答
17 条回复
tsl0922
2019-12-07 11:31:09 +08:00
应该只是临时的没有保证吧,而且构建记录多了查找也不方便,需要永久保留还是在 release 里上传稳些。
Smash
2019-12-07 11:32:38 +08:00
@tsl0922 release 不适合发布临时构建产物吧。
Smash
2019-12-07 11:36:22 +08:00
我想在想到两种方法:
1、新建一个 repo,用来存储 snapshot 的构建产物.
2、用自己双 11 的服务器来存储这些构建产物

当前要有一个过期删除的规则。
Trim21
2019-12-07 11:37:41 +08:00
时间文档里有说
GitHub stores artifacts for 90 days for pushes and pull requests.
Trim21
2019-12-07 11:40:34 +08:00
存储空间免费账户最大额度是 500mb,是在账单文档里面
Smash
2019-12-07 11:41:36 +08:00
@Trim21 结贴了,感谢。
Trim21
2019-12-07 11:41:57 +08:00
好像看错了,这个 500mb 说的是私有仓库,没说公开仓库的存储额度是多少…
Smash
2019-12-07 11:45:43 +08:00
@Trim21 orz,那不管了,先用着吧。到时候公开仓库应该会有一个过期或者限额能力。
Trim21
2019-12-07 11:50:43 +08:00
@Smash https://help.github.com/en/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-actions-usage#viewing-github-actions-usage-for-your-user-account

我看明白了,这个 500mb 是针对每个账户有 500mb 的存储空间额度,所有仓库共享,在 settings/billing 里面能看到。超过了会收费(
blankme
2019-12-07 11:54:36 +08:00
actions 运行完之后 github 就会把你的文件都清理掉,没有缓存。

github-hosted runner 磁盘 14g

github release 限制单文件 2g

这些信息文档里都有写
Smash
2019-12-07 12:10:08 +08:00
@Trim21 刚才在一个 issue 里面看到了,讨论如何删除已经上传的 artifact,有人说限额 1GB。

https://github.com/actions/upload-artifact/issues/5
crysislinux
2019-12-07 12:10:59 +08:00
我感觉 github actions 可用度还是挺高的了。你这个就是很典型的应用。release 不需要 Artifact,你直接调用 github http API 就好了,有相关的库的。不过我用的 npm release 和 semantic release,release 被他们接管了。
Smash
2019-12-07 12:13:32 +08:00
@crysislinux release 没有问题的,工作的很好。对于 actions 的 artifact 这块的支持不是很完善,貌似有限额,但却没有提供过期删除或者删除的 api。public 的 repo release 上传的二进制文件貌似不会限制容量的。
crysislinux
2019-12-07 12:17:12 +08:00
@Smash artifact 确实没删除的地方。不仅没 API,界面上也删不了。这个一般保存一些测试结果之类的吧。你是想保存临时的 release (还不知道是不是会被 merge 的那种) ?
Smash
2019-12-07 12:22:27 +08:00
@crysislinux 我主要是用来存临时的 golang 的交叉编译产物,每一个可执行的二进制文件都有 20mb 左右,因为把前端的静态产物都集成进 golang 的二进制文件内部了,编译几个平台的就达到 100 多 mb 了。

为了保证编译失败的时候能够快速的修复错误,所以我每次 push 都会触发 prebuild,感觉用不了多久就会占满容量。
Smash
2019-12-07 12:23:48 +08:00
@crysislinux 同时为了快速验证,所以也要保存二进制文件。当然只是临时保存一下。
crysislinux
2019-12-07 12:30:09 +08:00
@Smash 只是验证的话可以跑 test 啊,也可以 build,但是编译不需要保存,你只需要知道成功还是失败,如果失败,为何失败就够了。这种保存到 artifact 是完全够的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/626742

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX