Buildfarm是什么?
Buildfarm是一个基于 Python 的分布式编译系统,支持多种语言,包括 C、C++、Java、Python、Ruby 等。BuildFarm 的设计比较灵活,可以根据实际需求进行定制和扩展。它使用一个中心控制节点来管理多个编译服务器,中心控制节点会将编译任务分发给空闲的服务器。BuildFarm 还提供了 Web 界面来方便用户管理编译任务。
目标
通过buildfarm实现bazel远程缓存和远程执行。
要求
buildfarm需要一个backplane 来存储集群成员之间共享的信息。可以使用 redis 服务器来满足此要求。下载/安装 redis-server 实例并在本地主机上运行它。默认的 redis 端口 6379 将由默认的Buildfarm配置使用。redis安装方式参考bazel远程构建(Remote Execution) --- linux安装Redis-CSDN博客。需提前安装和运行redis,否则buildfarm运行时会报找不到可用的redis。
bazel示例工程
从当个文件编译为可执行文件方式,搭建bazel构建工程:
创建新目录作为工作区,并添加以下文件:
文件main.cc
及内容
#include <iostream>
int main( int argc, char *argv[] )
{
std::cout << "Hello, World!" << std::endl;
}
文件
BUILD
及内容
cc_binary(
name = "main",
srcs = ["main.cc"],
)
一个空的WORKSPACE文件,标识当前目录为bazel工作区
构建bazel的HelloWorld示例,运行如下命令:
bazel run :main
运行构建产物可执行二进制观察输出是否为预期的Hello, World
./bazel-bin/main
上述正常确保机器已正确安装bazel和C++编译器, 这个也是后续测试远程缓存和远程执行的一个工作目标。
Buildfarm下载部署
创建一个目录,然后在下面clone Bazel Buildfarm项目:
mkdir buildfarm
cd buildfarm
git clone https://github.com/bazelbuild/bazel-buildfarm.git
cd bazel-bu