我在 CI Docker 镜像中从头开始构建 Envoy 代理,如下所示
./ci/run_envoy_docker.sh './ci/do_ci.sh dev'
尽管“dev”目标打开了“fastbuild”选项,但构建 envoy 二进制文件仍然需要极长的时间。 Remote_cache的使用给单个动作的编译带来了显着的改进
./ci/run_envoy_docker.sh \"BAZEL_BUILD_OPTIONS='--remote_cache=http://cachesrv:8000' ./ci/do_ci.sh dev
尽管如此,在更改单个源文件时,bazel 的整个运行(启动、依赖项检查、链接等)仍然需要很长时间。
如何进一步增加 Envoy bazel 构建的响应时间,以便迭代开发过滤器?
tl;博士使用尽可能多的核心和尽可能多的内存。
对此没有简短的答案,但浏览页面为什么 Envoy 需要这么长时间来编译确实提供了一些补救措施,尽管没有确凿证据:
最好的方法是:
- 使用基于云的虚拟机以及 vscode 远程开发等工具。拥有 36 个以上的核心以及每个核心大约 2 GiB 的 RAM 仍然允许以合理的数量构建和测试整个源代码树
- 如果使用云计算机,请确保在本地临时 SSD 上构建,而不是在远程块存储(例如 EBS)上构建。该构建涉及大量磁盘访问,如果不使用快速本地驱动器,将会受到磁盘限制。