เหตุการณ์ BEP แต่ละประเภทมีความหมายเป็นของตัวเอง ซึ่งมีการบันทึกไว้อย่างคร่าวๆ ใน build_event_stream.proto อภิธานศัพท์ต่อไปนี้จะอธิบายเหตุการณ์แต่ละประเภท
ล้มเลิกแล้ว
Aborted
ไม่มีประเภทรหัสที่สอดคล้องกันต่างจากเหตุการณ์อื่นๆ เนื่องจากเหตุการณ์ Aborted
จะแทนที่เหตุการณ์ประเภทอื่นๆ เหตุการณ์นี้บ่งชี้ว่าการสร้างสิ้นสุดลงก่อนเวลาอันควรและรหัสเหตุการณ์ที่ปรากฏอยู่ไม่ได้สร้างขึ้นตามปกติ Aborted
มี Enum และคำอธิบายที่ใช้งานกับมนุษย์ได้เพื่ออธิบาย
สาเหตุที่บิลด์ไม่เสร็จสมบูรณ์
เช่น หากบิลด์กำลังประเมินเป้าหมายเมื่อผู้ใช้ขัดจังหวะ Bazel อยู่ BEP จะมีเหตุการณ์ดังต่อไปนี้
{
"id": {
"targetCompleted": {
"label": "//:foo",
"configuration": {
"id": "544e39a7f0abdb3efdd29d675a48bc6a"
}
}
},
"aborted": {
"reason": "USER_INTERRUPTED"
}
}
ActionExecuted
ให้รายละเอียดเกี่ยวกับการดำเนินการของการดำเนินการที่เฉพาะเจาะจงในบิลด์ โดยค่าเริ่มต้น เหตุการณ์นี้จะรวมอยู่ใน BEP สำหรับการดำเนินการที่ล้มเหลวเท่านั้น เพื่อรองรับการระบุสาเหตุที่แท้จริงของความล้มเหลวของบิลด์ ผู้ใช้อาจตั้งค่าแฟล็ก --build_event_publish_all_actions
เพื่อรวมเหตุการณ์ ActionExecuted
ทั้งหมด
BuildFinished
ระบบจะส่งเหตุการณ์ BuildFinished
รายการเดียวหลังจากคำสั่งเสร็จสมบูรณ์และรวมรหัสออกของคำสั่ง เหตุการณ์นี้ให้ข้อมูลที่น่าเชื่อถือเกี่ยวกับความสำเร็จ/ความล้มเหลว
BuildMetadata
มีเนื้อหาที่แยกวิเคราะห์ของแฟล็ก --build_metadata
เหตุการณ์นี้มีไว้เพื่อรองรับการผสานรวม Bazel กับเครื่องมืออื่นๆ โดยการต่อท่อข้อมูลภายนอก (เช่น ตัวระบุ)
BuildMetrics
ระบบจะส่งเหตุการณ์ BuildMetrics
รายการเดียวเมื่อสิ้นสุดคําสั่งทุกรายการ และจะมีตัวนับ/มาตรวัดที่มีประโยชน์ในการวัดลักษณะการทํางานของเครื่องมือสร้างในระหว่างคําสั่ง เมตริกเหล่านี้ระบุงานที่ทําจริงและจะไม่นับงานที่แคชไว้แล้วซึ่งนํามาใช้ซ้ำ
โปรดทราบว่าระบบอาจไม่ป้อนข้อมูล memory_metrics
หากไม่มีการรวบรวมขยะ Java ระหว่างการเรียกใช้คําสั่ง ผู้ใช้อาจตั้งค่าตัวเลือก --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
ที่บ่งบอกถึงการแสดงผลที่ส่งผ่าน เหตุการณ์ดังกล่าว 3 รายการจะปรากฏใน BEP ดังนี้
"original"
: บรรทัดคำสั่งที่สร้างขึ้นใหม่เมื่อ Bazel ได้รับจากไคลเอ็นต์ Bazel โดยไม่มีตัวเลือกการเริ่มต้นใช้งานที่มาจากไฟล์ .rc"canonical"
: บรรทัดคำสั่งที่มีประสิทธิภาพพร้อมไฟล์ .rc ที่ขยายและนโยบายการเรียกใช้"tool"
: ดึงข้อมูลมาจากตัวเลือก--experimental_tool_command_line
ซึ่งมีประโยชน์ในการส่งบรรทัดคำสั่งของเครื่องมือที่รวม Bazel ผ่าน BEP ซึ่งอาจเป็นข้อความบัฟเฟอร์โปรโตคอลไบนารีCommandLine
ที่เข้ารหัสแบบ Base64 ซึ่งใช้โดยตรง หรือสตริงที่ถูกแยกวิเคราะห์แต่ไม่ได้ตีความ (เนื่องจากตัวเลือกของเครื่องมืออาจแตกต่างจาก Bazel)
การกำหนดค่า
ระบบจะส่งเหตุการณ์ Configuration
สําหรับ configuration
ทั้งหมดที่ใช้ในเป้าหมายระดับบนสุดในบิลด์ ต้องมีเหตุการณ์การกําหนดค่าอย่างน้อย 1 รายการเสมอ id
จะถูกนําไปใช้ซ้ำโดยรหัสเหตุการณ์ TargetConfigured
และ TargetComplete
และจําเป็นต่อการแยกแยะเหตุการณ์เหล่านั้นในบิลด์การกําหนดค่าหลายรายการ
{
"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
รายการเดียวจะแสดงตัวเลือกทั้งหมดที่ใช้กับคำสั่ง โดยแยกตัวเลือกการเริ่มต้นใช้งานออกจากตัวเลือกคำสั่ง รวมถึง 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
ระบุชุดเป้าหมายทั้งหมดที่ตรงกับรูปแบบที่ระบุในบรรทัดคำสั่ง สําหรับคําสั่งที่ทํางานสําเร็จ ระบบจะแสดงเหตุการณ์เดียวที่มีรูปแบบทั้งหมดใน 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)
แต่ละชุดที่ทํางานเสร็จสมบูรณ์แล้ว เหตุการณ์ TargetComplete
จะรวมอยู่ใน BEP เหตุการณ์ประกอบด้วยการทํางานสำเร็จ/ไม่สําเร็จของเป้าหมายและกลุ่มเอาต์พุตที่ขอของเป้าหมาย
{
"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
ต่อไปนี้สําหรับเป้าหมายเดียวที่มีการกําหนดค่า 2 รายการ
{
"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
หากมีการขอการทดสอบ ระบบจะส่งเหตุการณ์ TestSummary
สำหรับการทดสอบแต่ละรายการ (target,
configuration)
ซึ่งมีข้อมูลที่จําเป็นต่อการตีความผลการทดสอบ ระบบรวมจำนวนครั้งที่พยายาม ชาร์ด และการเรียกใช้ต่อการทดสอบ เพื่อให้ผู้บริโภคของ BEP แยกความแตกต่างของอาร์ติแฟกต์ในมิติข้อมูลเหล่านี้ได้ ระบบจะพิจารณาจำนวนครั้งที่พยายามและจำนวนครั้งที่เรียกใช้ต่อการทดสอบขณะสร้างTestStatus
รวมเพื่อแยกความแตกต่างระหว่างการทดสอบ FLAKY
กับการทดสอบ FAILED
UnstructuredCommandLine
เหตุการณ์นี้แตกต่างจาก CommandLine เนื่องจากมีแฟล็กบรรทัดคำสั่งที่ยังไม่ได้แยกวิเคราะห์ในรูปแบบสตริงตามที่เครื่องมือสร้างพบหลังจากขยายไฟล์ .bazelrc
ทั้งหมดและพิจารณาแฟล็ก --config
ระบบอาจใช้เหตุการณ์ UnstructuredCommandLine
เพื่อจำลองการเรียกใช้คำสั่งอย่างถูกต้อง
WorkspaceConfig
เหตุการณ์ WorkspaceConfig
รายการเดียวมีข้อมูลการกำหนดค่าเกี่ยวกับพื้นที่ทำงาน เช่น รูทการดำเนินการ
WorkspaceStatus
เหตุการณ์ WorkspaceStatus
รายการเดียวจะมีผลลัพธ์ของคำสั่งสถานะพื้นที่ทำงาน