在bazel-buildfarm上连接到远程Bazel主站时出现“无法使用io异常”

时间:2019-11-12 19:55:04

标签: java bazel

我想使用bazel-buildfarm用1个主服务器(192.168.60.99)和1个工作器(192.168.60.98)设置一个小的POC远程区域。两者都是配备了Vagrant的CentOS 7机器。从网络中的Ubuntu工作站(第三台计算机)连接时,发生以下错误:

$ bazel build --verbose_failures //projects/myproj:app
Starting local Bazel server and connecting to it...
INFO: Options provided by the client:
 Inherited 'common' options: --isatty=1 --terminal_columns=229
INFO: Reading rc options for 'build' from /home/user/tests/ecommerce/.bazelrc:
 'build' options: --strategy=TypeScriptCompile=worker --strategy=AngularTemplateCompile=worker --symlink_prefix=dist/ --define=compile=legacy --incompatible_strict_action_env --experimental_allow_incremental_repository_updates --distdir=third_party/_distdir
INFO: Reading rc options for 'build' from /home/user/.bazelrc:
 'build' options: --spawn_strategy=remote --genrule_strategy=remote --strategy=Javac=remote --strategy=Closure=remote --remote_executor=192.168.60.99:8980
INFO: Writing tracer profile to '/home/user/.cache/bazel/_bazel_user/24700f1ad3e201a00a1c26bd59dc6502/command.profile.gz'
INFO: Invocation ID: 569b59ca-edcb-4922-92a0-b6f0b5ca2819
ERROR: Failed to query remote execution capabilities: UNAVAILABLE: io exception

网络连接正常,我什至可以使用telnet连接到Bazel:

telnet 192.168.60.99 8980
Trying 192.168.60.99...
Connected to 192.168.60.99.
Escape character is '^]'.
第三台Ubuntu计算机的

.bazelrc文件:

$ cat ~/.bazelrc
build --spawn_strategy=remote --genrule_strategy=remote --strategy=Javac=remote --strategy=Closure=remote --remote_executor=192.168.60.99:8980

Buildfarm设置

两个人都获得了buildfarm git repo的克隆。使用了The example config files。只是在服务器上,我用localhost(主服务器ip)替换了192.168.60.99

我知道不推荐使用bazel run。但是在缺乏better alternatives that works的情况下,我的想法是首先采用记录的方式工作(Bazel本身未提及任何替代方法)。由于bazel run都不起作用,因此我认为我的安装有问题。

所有机器都使用版本1.1.0,这是撰写本文时最新的稳定版本。 bazel-buildfarm绝对是一个问题,因为本地版本在Ubuntu机器上可以正常工作。

主服务器

bazel run //src/main/java/build/buildfarm:buildfarm-server $(pwd)/examples/server.config.example

工人

bazel run //src/main/java/build/buildfarm:buildfarm-operationqueue-worker $(pwd)/examples/worker.config.example --distdir ~/distdir/

distdir是我们公司代理的一种解决方法,该代理使用MITM攻击来操纵文件。由于Bazel不允许这样做,因此我手动下载了受影响的文件,因为它是jdk:

[vagrant@localhost bazel-buildfarm]$ l ~/distdir/
total 188M
-rw-rw-r--. 1 vagrant vagrant 188M Jan 17  2019 zulu11.2.3-jdk11.0.1-linux_x64.tar.gz

1 个答案:

答案 0 :(得分:2)

如果使用Bazel> = 1.0,则需要在grpc中指定协议.bazelrc,如下所示:

--remote_executor=grpc://192.168.60.99:8980

在没有协议的情况下,发生UNAVAILABLE: io exception。当前没有有关此问题的文档。