【问题标题】:running bazel remote executor test on separate machines在不同的机器上运行 bazel 远程执行器测试
【发布时间】:2017-06-08 00:18:08
【问题描述】:

bazel 的远程工作者指南 (here) 解释了如何在本地启动远程工作者,然后对其运行 bazel。

我试过了,确实有效(有 reported in GH 的错误)

另一种尝试是通过在 docker 容器中运行远程工作程序并在其上运行 bazel 来创建在虚拟独立机器上运行的远程工作人员。但它以不同的方式失败了——我认为这次我用错了。

这是我的 docker 文件:

FROM openjdk:8

# install release bazel from apt
RUN echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list
RUN curl https://bazel.build/bazel-release.pub.gpg |  apt-key add -
RUN apt-get update && apt-get install -y zip bazel

# compile dev bazel from sources
RUN mkdir -p /usr/src/bazel
# "bazel" has the latest development code of bazel from github
COPY bazel /usr/src/bazel
WORKDIR /usr/src/bazel
RUN bazel build src/bazel

# compile remote_worker using latest development bazel
RUN bazel-bin/src/bazel build //src/tools/remote_worker

# prepare cache folder
RUN mkdir -p /tmp/test

# Run remote-worker
CMD ["bazel-bin/src/tools/remote_worker/remote_worker","--work_path=/tmp/test","--listen_port=3030"]

构建完成后,我只是运行了将端口绑定到 localhost 的 docker:

$ docker build -t bazel-worker .
$ docker run -p 3030:3030 bazel-worker

然后运行 ​​bazel java test 以使用远程工作者运行: (可以查看我的测试仓库here

$ bazel --host_jvm_args=-Dbazel.DigestFunction=SHA1 test \
      --spawn_strategy=remote \
      --remote_executor=localhost:3030 \
      --remote_cache=localhost:3030 \
      --strategy=Javac=remote \
      --remote_local_fallback=false \
      --remote_timeout=600 \
      //src/main/java/com/example/...

但是我收到了这个奇怪的错误信息:

____Loading package: src/main/java/com/example
____Loading package: @bazel_tools//tools/cpp
____Loading package: @local_jdk//
____Loading package: @local_config_xcode//
____Loading package: @local_config_cc//
____Loading complete.  Analyzing...
____Loading package: tools/defaults
____Loading package: @bazel_tools//third_party/java/jdk/langtools
____Loading package: @junit//jar
____Found 1 test target...
____Building...
____[0 / 2] BazelWorkspaceStatusAction stable-status.txt
____[2 / 4] Creating source manifest for //src/main/java/com/example:my_test
____From Extracting interface @junit//jar:jar:
/tmp/test/build-80057300-ffd2-49ea-a20b-3f234d9963db/external/bazel_tools/tools/jdk/ijar/ijar: 1: /tmp/test/build-80057300-ffd2-49ea-a20b-3f234d9963db/external/bazel_tools/tools/jdk/ijar/ijar: �����0��!H__PAGEZEROx__TEXTpp__text__TEXT/��__stubs__TEXT0p�__stub_helper__TEXT���__gcc_except_tab__TEXT�: not found
/tmp/test/build-80057300-ffd2-49ea-a20b-3f234d9963db/external/bazel_tools/tools/jdk/ijar/ijar: 2: /tmp/test/build-80057300-ffd2-49ea-a20b-3f234d9963db/external/bazel_tools/tools/jdk/ijar/ijar: Syntax error: word unexpected (expecting ")")
ERROR: /private/var/tmp/_bazel_ors/719f891d5db9fd5e73ade25b0c847fd1/external/junit/jar/BUILD.bazel:2:1: output 'external/junit/jar/_ijar/jar/external/junit/jar/junit-4.12-ijar.jar' was not created.
ERROR: /private/var/tmp/_bazel_ors/719f891d5db9fd5e73ade25b0c847fd1/external/junit/jar/BUILD.bazel:2:1: not all outputs were created or valid.
____Building complete.
Target //src/main/java/com/example:my_test failed to build
Use --verbose_failures to see the command lines of failed build steps.
____Elapsed time: 13.614s, Critical Path: 0.21s

我做错了吗?在实际(或虚拟)远程机器上运行远程工作者时,我是否需要以不同的方式运行它(与仅在本地运行它相比)?


重要提示:我的机器是mac osx sierra。 ,我相信dockeropenjdk:8是基于ubuntu的,我在本地运行bazel开发版(sha956810b6ee24289e457a4b8d0a84ff56eb32c264)。

【问题讨论】:

    标签: java docker bazel


    【解决方案1】:

    在与 Bazel 本身不同的架构/操作系统组合上运行远程工作人员目前还不能正常工作。我们在 Bazel 仍有几个地方检查本地机器 - 它们是作为临时措施添加的,但尚未修复。

    编辑:在某些情况下它可能会起作用,尤其是对于独立于平台的代码(例如,Java 或 Scala)。

    如果您的构建需要大量测试,您可以尝试仅使用 --test_strategy=remote; 远程运行测试;不过,我不确定默认的 Jvm 配置是否有效。

    如果您想远程运行整个构建,那么您需要告诉 Bazel 它在哪种机器/操作系统上执行。现在,这需要设置 --host_cpu,并且可能需要设置 --crosstool_top / --host_crosstool_top 来为该平台配置 C++ 编译器。

    此外,某些平台组合更可能起作用,而另一些则不太可能起作用。特别是,将 MacOS 和 Linux 或不同风格的 Linux 组合起来比 Windows 在任何组合中都更有可能工作。

    【讨论】:

    • 哇哦。不知道。 Out 用例专门围绕利用我们本地机器以外的其他架构。有没有关于它的GH问题?我们可以遵循什么?
    • 我编辑了我的答案,使其更加完整。我不知道 GH 问题,但它在我们的待办事项清单上以支持这个很快。
    猜你喜欢
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2015-06-11
    • 2014-11-05
    • 1970-01-01
    • 2022-12-09
    相关资源
    最近更新 更多