管道构建时,Bazel构建命令模棱两可的stdout / stderr

问题描述 投票:0回答:1

例如,在典型的Bazel项目中,运行bazel build :main会在terminal中导致此输出:

Analyzing: target //:main (0 packages loaded, 0 targets configured)
    currently loading: @bazel_tools//tools/cpp
    Fetching @rules_cc; fetching 5s

但是将其通过管道传输到文件(bazel build :main 2>output.txt)时,output.txt的内容类似于:

Analyzing: target //:main (0 packages loaded, 0 targets configured)
Analyzing: target //:main (0 packages loaded, 0 targets configured)
Analyzing: target //:main (0 packages loaded, 0 targets configured)
Analyzing: target //:main (0 packages loaded, 0 targets configured)
Analyzing: target //:main (0 packages loaded, 0 targets configured)
Analyzing: target //:main (0 packages loaded, 0 targets configured)
Analyzing: target //:main (0 packages loaded, 0 targets configured)

这也是我在gitlab CI前端中看到的。 (因为它已经通过管道传递了命令的输出...)。我有两个问题:1。如何捕获分析的详细信息;像现在正在获取什么? (即,如何捕获完全相同的输出?)2。 0 packages loaded是什么意思?那么配置目标呢?

pipe bazel io-redirection
1个回答
0
投票

我不是100%肯定会完成您关心的所有事情,但是我会使用Build Event Protocol来解决此问题,这会写出一个文件(请参阅--build_event_binary_file--build_event_text_file),该文件描述了由Bazel采取,否则它将打开与您选择的服务器的gRPC连接(请参见--bes_backend)并在那里发出事件。试图解析二进制文件的stdout / err绝对不包含您想要的所有信息。

© www.soinside.com 2019 - 2024. All rights reserved.