Flutter项目GitLab CI/CD流水线失败:无法解析pub.dev主机
GitLab CI中Flutter无法访问pub.dev的问题排查
一、GitLab相关设置导致的可能原因
- 项目级网络管控:如果项目开启了受保护分支对应的严格CI网络策略,或者CI/CD变量中配置了错误的代理参数,可能会阻断Runner对pub.dev的访问。另外企业自建GitLab实例通常会有出站防火墙规则,若pub.dev被列入屏蔽名单也会导致失败。
- 自托管Runner配置限制:如果使用的是自己部署的GitLab Runner,检查
config.toml里的network_mode是否将Runner限制在无法访问外网的Docker网络中,或者代理配置错误导致DNS解析失效。
二、其他非GitLab设置的常见原因
- Docker镜像DNS异常:你使用的
ghcr.io/cirruslabs/flutter:3.10.3镜像本身可能存在DNS配置问题。可以在before_script里先执行nslookup pub.dev或ping pub.dev,验证域名解析是否正常。 - 临时网络波动:GitLab共享Runner所在服务器可能出现短暂网络故障,导致无法解析pub.dev。可以尝试重新触发流水线,看是否能恢复正常。
- 依赖安装影响网络配置:
before_script中先安装openjdk的操作,可能意外修改了系统的DNS或网络参数。可以调整顺序,先验证网络再安装依赖,或者在安装jdk后重新检查网络连通性。 - 未配置适配的Flutter镜像源:如果所在环境无法直接访问官方pub.dev,需要在CI脚本中配置国内镜像源,比如:
flutter config --set pub-hosted-url https://pub.flutter-io.cn flutter config --set storage-base-url https://storage.flutter-io.cn
快速排查步骤
在flutter doctor步骤前添加以下命令,帮助定位具体问题:
- nslookup pub.dev - ping -c 3 pub.dev - curl -v https://pub.dev
内容的提问来源于stack exchange,提问作者Gyuri Majercsik
相关产品推荐
相关产品推荐

