最近接到反馈,CI服务器上一个前端项目打包总是失败,打开task的日志发现是flot这个依赖需要从codeload.github.com
下载,但是网络连接总是超时,超过yarn的重试次数限制后,直接报错。
在网上找到的方案是,修改服务器的hosts文件,直接指定这个地址的IP,IP怎么确定,从这个网址查询:
https://www.ipaddress.com
笔者维护的CI是gitlab ce,安装于CentOS 7.x
,修改hosts并刷新dns非常容易
sudo vim /etc/hosts
# 添加如下记录
# codeload.github.com 140.82.114.9
# 保存后刷新DNS
sudo nscd -i hosts
修改后,用wget尝试了直接下载那个依赖,的确正常了。但是事情并没有结束,因为前端项目也用了docker进行打包,直接重新执行task发现故障依旧,推测是docker的镜像内还是使用的自带hosts,修改脚本,让docker使用host的网络
docker build --network=host your_other_params
# 这里是用docker build方式来打包的,如果是run的方式,也可以指定使用host网络
再次执行task,打包成功,至此故障解决。