每種 BEP 事件類型都有自己的語意 build_event_stream.proto. 以下詞彙解釋說明各種事件類型。
已取消
與其他事件不同,Aborted
沒有對應的 ID 類型,因為
Aborted
事件會「取代」其他類型的事件。這個事件表示
版本提早終止,且其顯示的事件 ID 並未產生
一般問題。Aborted
包含列舉和容易理解的說明
說明建構失敗的原因
舉例來說,如果使用者中斷 Bazel 時正在評估目標, BEP 包含如下事件:
{
"id": {
"targetCompleted": {
"label": "//:foo",
"configuration": {
"id": "544e39a7f0abdb3efdd29d675a48bc6a"
}
}
},
"aborted": {
"reason": "USER_INTERRUPTED"
}
}
ActionExecuted
這個外掛程式能針對特定的
建構中的 Action。根據預設,這個事件為
僅納入失敗動作的 BEP,以支援找出根本原因
建構失敗的叢集使用者可以設定 --build_event_publish_all_actions
標記
納入所有 ActionExecuted
事件。
BuildFinished
指令執行完畢後,會傳送單一 BuildFinished
事件
包含指令的結束程式碼這個活動提供權威性
。
BuildMetadata
包含 --build_metadata
旗標的剖析內容。這個活動已存在
來插入外部資料 (例如
識別碼)。
BuildMetrics
每個指令的結尾都會傳送單一 BuildMetrics
事件,其中包含
計數器/記錄,有助於量化建構工具在
指令這些指標表示工作已執行完畢,而且不會快取快取數量
定義重複性工作。
請注意,如果沒有 Java 垃圾,可能不會填入 memory_metrics
集合。使用者可以設定
--memory_profile=/dev/null
選項,可強制執行垃圾
在指令結尾執行,填入 memory_metrics
。
{
"id": {
"buildMetrics": {}
},
"buildMetrics": {
"actionSummary": {
"actionsExecuted": "1"
},
"memoryMetrics": {},
"targetMetrics": {
"targetsLoaded": "9",
"targetsConfigured": "19"
},
"packageMetrics": {
"packagesLoaded": "5"
},
"timingMetrics": {
"cpuTimeInMs": "1590",
"wallTimeInMs": "359"
}
}
}
BuildStarted
BEP 串流中的第一個事件,BuildStarted
包含描述
啟動任何有意義的工作。
BuildToolLogs
系統會在指令結尾傳送單一 BuildToolLogs
事件,包括 URI
能協助理解或偵錯使用這項工具產生的檔案
建構工具行為部分資訊可能會以內嵌方式提供。
{
"id": {
"buildToolLogs": {}
},
"lastMessage": true,
"buildToolLogs": {
"log": [
{
"name": "elapsed time",
"contents": "MC4xMjEwMDA="
},
{
"name": "process stats",
"contents": "MSBwcm9jZXNzOiAxIGludGVybmFsLg=="
},
{
"name": "command.profile.gz",
"uri": "file:///tmp/.cache/bazel/_bazel_foo/cde87985ad0bfef34eacae575224b8d1/command.profile.gz"
}
]
}
}
CommandLine
BEP 包含多個 CommandLine
事件,
指令列引數 (包括選項和未解譯的引數)。
每個 CommandLine
事件的 StructuredCommandLineId
都有一個標籤,
會指明所傳達的表示法有三個這類事件會出現在 BEP:
"original"
:在 Bazel 從 Bazel 接收時,重新建構指令列 沒有來自 .rc 檔案的啟動選項。"canonical"
:有效的指令列,內含 .rc 檔案,以及 套用了叫用政策。"tool"
:從--experimental_tool_command_line
選項填入。這個 很適合用來傳達透過 BEP 包裝 Bazel 的工具指令列。 這可能是採用 Base64 編碼的CommandLine
二進位通訊協定緩衝區訊息 直接使用,或經過剖析但未解譯的字串 (如 工具提供的選項可能與 Bazel 不同)。
設定
每 configuration
都會傳送 Configuration
事件
用於建構作業中的頂層目標至少有一個設定事件
一律存在id
會由 TargetConfigured
和
TargetComplete
事件 ID,用來區分這些事件中的事件
多重設定建構
{
"id": {
"configuration": {
"id": "a5d130b0966b4a9ca2d32725aa5baf40e215bcfc4d5cdcdc60f5cc5b4918903b"
}
},
"configuration": {
"mnemonic": "k8-fastbuild",
"platformName": "k8",
"cpu": "k8",
"makeVariable": {
"COMPILATION_MODE": "fastbuild",
"TARGET_CPU": "k8",
"GENDIR": "bazel-out/k8-fastbuild/bin",
"BINDIR": "bazel-out/k8-fastbuild/bin"
}
}
}
ConvenienceSymlinksIdentified
實驗功能。如果--experimental_convenience_symlinks_bep_event
則會產生單一 ConvenienceSymlinksIdentified
事件
指定應如何管理工作區中的符號連結的 build
指令。
這可讓您建構可遠端叫用 Bazel,然後安排本機執行
就能進一步瞭解 Bazel 已在本機執行
{
"id": {
"convenienceSymlinksIdentified":{}
},
"convenienceSymlinksIdentified": {
"convenienceSymlinks": [
{
"path": "bazel-bin",
"action": "CREATE",
"target": "execroot/google3/bazel-out/k8-fastbuild/bin"
},
{
"path": "bazel-genfiles",
"action": "CREATE",
"target": "execroot/google3/bazel-out/k8-fastbuild/genfiles"
},
{
"path": "bazel-out",
"action": "CREATE",
"target": "execroot/google3/bazel-out"
}
]
}
}
擷取
表示在執行指令的過程中發生擷取作業。 與其他事件不同的是,如果重複使用快取的擷取結果,此事件不會 出現在 BEP 串流中
NamedSetOfFiles
「NamedSetOfFiles
」事件回報的結構與
在指令評估期間產生的 depset
檔案。
遞移納入的 Depset 是由 NamedSetOfFilesId
識別。
如要進一步瞭解如何解讀串流的 NamedSetOfFiles
事件,請參閱
BEP 範例頁面。
OptionsParsed
單一 OptionsParsed
事件會列出指令套用的所有選項,
將啟動選項與指令選項區隔開來此 SDK 也包含
InvocationPolicy (如有)。
{
"id": {
"optionsParsed": {}
},
"optionsParsed": {
"startupOptions": [
"--max_idle_secs=10800",
"--noshutdown_on_low_sys_mem",
"--connect_timeout_secs=30",
"--output_user_root=/tmp/.cache/bazel/_bazel_foo",
"--output_base=/tmp/.cache/bazel/_bazel_foo/a61fd0fbee3f9d6c1e30d54b68655d35",
"--deep_execroot",
"--expand_configs_in_place",
"--idle_server_tasks",
"--write_command_log",
"--nowatchfs",
"--nofatal_event_bus_exceptions",
"--nowindows_enable_symlinks",
"--noclient_debug",
],
"cmdLine": [
"--enable_platform_specific_config",
"--build_event_json_file=/tmp/bep.json"
],
"explicitCmdLine": [
"--build_event_json_file=/tmp/bep.json"
],
"invocationPolicy": {}
}
}
PatternExpanded
PatternExpanded
事件代表符合模式的所有目標組合
提供的 3D 物件如需成功指令,單一事件會顯示在
具有 PatternExpandedId
中的所有模式,以及
PatternExpanded
事件的子項。如果模式展開為
test_suite
是 test_suite
包含的測試目標組合。對於每項
無法解析的模式,BEP 包含額外的 Aborted
並用 PatternExpandedId
識別模式。
{
"id": {
"pattern": {
"pattern":["//base:all"]
}
},
"children": [
{"targetConfigured":{"label":"//base:foo"}},
{"targetConfigured":{"label":"//base:foobar"}}
],
"expanded": {
"testSuiteExpansions": {
"suiteLabel": "//base:suite",
"testLabels": "//base:foo_test"
}
}
}
進度
進度事件包含 Bazel 產生的標準輸出內容和標準錯誤 期間。這些事件也會視需要自動產生 宣告尚未由邏輯「父項」宣告的事件活動 (距離 特別是 NamedSetOfFiles)。
TargetComplete
針對完成(target, configuration, aspect)
執行階段,BEP 會包含 TargetComplete
事件。事件包含
目標的成功/失敗情況,以及目標要求的輸出群組。
{
"id": {
"targetCompleted": {
"label": "//examples/py:bep",
"configuration": {
"id": "a5d130b0966b4a9ca2d32725aa5baf40e215bcfc4d5cdcdc60f5cc5b4918903b"
}
}
},
"completed": {
"success": true,
"outputGroup": [
{
"name": "default",
"fileSets": [
{
"id": "0"
}
]
}
]
}
}
TargetConfigured
針對完成分析階段的每個目標,TargetConfigured
事件為
包含在 BEP 中這是目標「規則種類」的權威來源
屬性。套用至目標的設定會顯示在宣告的
子項。
舉例來說,使用 --experimental_multi_cpu
選項建構時可能會產生
下列為一個指定目標的 TargetConfigured
事件
配置:
{
"id": {
"targetConfigured": {
"label": "//starlark_configurations/multi_arch_binary:foo"
}
},
"children": [
{
"targetCompleted": {
"label": "//starlark_configurations/multi_arch_binary:foo",
"configuration": {
"id": "c62b30c8ab7b9fc51a05848af9276529842a11a7655c71327ade26d7c894c818"
}
}
},
{
"targetCompleted": {
"label": "//starlark_configurations/multi_arch_binary:foo",
"configuration": {
"id": "eae0379b65abce68d54e0924c0ebcbf3d3df26c6e84ef7b2be51e8dc5b513c99"
}
}
}
],
"configured": {
"targetKind": "foo_binary rule"
}
}
TargetSummary
針對每個執行的 (target, configuration)
組合,TargetSummary
事件就會納入包含設定的匯總成功結果中
目標的執行作業及所有層面都套用至該設定的目標。
TestResult
收到測試請求時,每次測試都會傳送 TestResult
事件。
資料分割與執行作業,且每次測試都會執行。這讓 BEP 消費者能夠明確找出
測試動作未通過測試,並找出測試輸出內容 (例如
test.xml 檔案)。
TestSummary
如果要求測試,系統會為每個測試 (target,
configuration)
傳送 TestSummary
事件,其中包含解讀測試的必要資訊
也就是預測結果每項測試的嘗試次數、資料分割和執行作業數量都包含在內
BEP 取用者來區分這些維度中的構件。嘗試
而每次測試都會在產生匯總 TestStatus
時
區分 FLAKY
測試和 FAILED
測試。
UnstructuredCommandLine
與 CommandLine 不同,此事件包含未剖析的指令列
建構工具在展開所有標記後遇到的字串形式標記
.bazelrc
檔案和
考慮使用 --config
旗標。
UnstructuredCommandLine
事件可能仰賴於精確地重現一個
任一指令的執行作業
WorkspaceConfig
單一 WorkspaceConfig
事件包含
例如執行根目錄
WorkspaceStatus
單一 WorkspaceStatus
事件包含工作區狀態的結果
指令。