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