繁体   English   中英

以生产就绪的方式执行 bazel-buildfarm,无需“bazel run”

[英]Execute bazel-buildfarm in a production-ready way without “bazel run”

Bazel-buildfarm 的自述文件说:

In general do not execute server binaries with bazel run, since bazel does not support running multiple targets.

这听起来像bazel run是为本地测试目的而设计的,而不是为可以运行多个作业的生产服务器而设计的。 但是我找不到显示如何运行 bazel 服务器的文档。 较旧的 Dockerfile运行 bazel build,然后使用 java 执行生成的 jar 文件。 我在我的测试机器上试过这个并得到以下错误:

[vagrant@localhost bazel-buildfarm]$ java -Djava.util.logging.config.file=/config/logging.properties -jar bazel-bin/src/main/java/build/buildfarm/buildfarm-server.jar
no main manifest attribute, in bazel-bin/src/main/java/build/buildfarm/buildfarm-server.jar

之前的构建似乎工作:

[vagrant@localhost bazel-buildfarm]$ bazel build //src/main/java/build/buildfarm:buildfarm-server
Starting local Bazel server and connecting to it...
[...]
INFO: Analyzed target //src/main/java/build/buildfarm:buildfarm-server (94 packages loaded, 1623 targets configured).
INFO: Found 1 target...
INFO: Deleting stale sandbox base /home/vagrant/.cache/bazel/_bazel_vagrant/277990f61896f4bac21fb997fb976b70/sandbox
Target //src/main/java/build/buildfarm:buildfarm-server up-to-date:
  bazel-bin/src/main/java/build/buildfarm/buildfarm-server.jar
  bazel-bin/src/main/java/build/buildfarm/buildfarm-server
INFO: Elapsed time: 11.180s, Critical Path: 0.61s
INFO: 0 processes.
INFO: Build completed successfully, 1 total action

并且 jar 文件存在:

[vagrant@localhost bazel-buildfarm]$ l bazel-bin/src/main/java/build/buildfarm/buildfarm-server
-r-xr-xr-x. 1 vagrant vagrant 17K Nov 11 11:27 bazel-bin/src/main/java/build/buildfarm/buildfarm-server

我刚刚使用 CentOS 存储库和所有依赖项(gcc gcc-c++)安装了 bazel,并克隆了 bazel-buildfarm 的 git 存储库。

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

服务器至少可以成功启动:

INFO: Analyzed target //src/main/java/build/buildfarm:buildfarm-server (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
Target //src/main/java/build/buildfarm:buildfarm-server up-to-date:
  bazel-bin/src/main/java/build/buildfarm/buildfarm-server.jar
  bazel-bin/src/main/java/build/buildfarm/buildfarm-server
INFO: Elapsed time: 0.325s, Critical Path: 0.00s
INFO: 0 processes.
INFO: Build completed successfully, 1 total action
INFO: Build completed successfully, 1 total action
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Nov 12, 2019 3:08:13 PM build.buildfarm.server.BuildFarmServer <init>
INFO: buildfarm-server-c6735a2a-2c1b-473e-9d3e-14fe5d01c27d initialized

我究竟做错了什么? 还是有另一种方法可以以生产就绪的方式运行 bazel?

平台:CentOS 7.7.1908 与 Bazel 1.1.0 在 Vagrant

虽然我不知道关于 buildfarm 的任何具体信息,但您可能在使用 Bazel 运行的目标与其 arguments 之间缺少双破折号 ( -- )。 你的命令行应该是这样的:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM