阿里云内网上传,上传速度通常不到 300KB/s,一个 pipeline 需要上传 200多M 的 artifacts,要10多分钟,太慢了
上传后端 build 输出文件(上传过程中)
上传后端 build 输出文件(上传已完成)
上传前端 build 输出文件(上传已完成)
见过的最快上传速度是 307KB/s
这是 gitlab 知名问题,gitlab 上的 issue: Slow artifact creation and upload
请问有什么变通方法可以解决这个问题?
后续 job下载这些 artifacts 飞快,只需14秒左右
终于真相大白!与 gitlab 无关,是因为 gitlab-runner 的配置问题造成没有走内网,走的是外网,外网的带宽只有5M。
gitlab-runner 解析 gitlab 服务器的内网 IP 地址是通过在 /etc/hosts 中添加解析,但上传 artifacts 的 job 跑在 docker executor 中,/etc/hosts 的解析对 docker 容器不起作用,需要在 /etc/gitlab-runner/config.toml 中专门为 docker 容器添加解析
extra_hosts = [""gitlab-server:private-ip"]
添加解析后,瞬间就完成上传200多M的 artifacts 文件
生成release只需要链接就可以,所以上传存储可以找个第三方,比如阿里云oss,或者自己的文件服务,不一定要gitlab的文件,只要你能确保release的链接能下载文件就行;
gitlab-runner 对应的实现源码 network/gitlab.go#L708
– dudu 2年前从 gitlab-runner 的源码看上传 artifacts 就是向 gitlab web api 发 post 请求
– dudu 2年前