เหตุการณ์ BEP แต่ละประเภทมีความหมายเฉพาะตัว ซึ่งมีการบันทึกไว้ใน build_event_stream.proto อย่างน้อยที่สุด อภิธานศัพท์ต่อไปนี้อธิบายเหตุการณ์แต่ละประเภท
ล้มเลิกแล้ว
Aborted ไม่มีประเภทรหัสที่สอดคล้องกันเหมือนกับเหตุการณ์อื่นๆ เนื่องจากเหตุการณ์ Aborted จะ แทนที่ เหตุการณ์ประเภทอื่นๆ เหตุการณ์นี้บ่งบอกว่าบิลด์สิ้นสุดก่อนเวลาอันควรและระบบไม่ได้สร้างรหัสเหตุการณ์ที่ปรากฏตามปกติ Aborted มี Enum และคำอธิบายที่เข้าใจง่ายเพื่ออธิบายเหตุผลที่บิลด์ไม่เสร็จสมบูรณ์
ตัวอย่างเช่น หากบิลด์กำลังประเมินเป้าหมายเมื่อผู้ใช้ขัดจังหวะ 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 เหตุการณ์นี้มีขึ้นเพื่อรองรับการผสานรวม 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
BuildStarted ซึ่งเป็นเหตุการณ์แรกในสตรีม BEP จะมีข้อมูลเมตาที่อธิบายคำสั่งก่อนที่จะเริ่มงานที่มีความหมาย
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 คำสั่ง build จะสร้างเหตุการณ์ ConvenienceSymlinksIdentified รายการเดียวเพื่อระบุวิธีจัดการ Symlink ในพื้นที่ทำงาน
ซึ่งช่วยให้เครื่องมือบิลด์ที่เรียกใช้ 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 ของไฟล์ที่สร้างขึ้นระหว่างการประเมินคำสั่ง
ระบบจะระบุ depsets ที่รวมไว้แบบทรานซิทีฟด้วย 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",
"--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
ระบบจะรวมเหตุการณ์ TargetComplete ไว้ใน BEP สำหรับการผสมผสาน (target, configuration, aspect) แต่ละรายการที่เสร็จสมบูรณ์ในระยะการดำเนินการ เหตุการณ์นี้มีข้อมูลความสำเร็จ/ความล้มเหลวของเป้าหมายและกลุ่มเอาต์พุตที่ขอของเป้าหมาย
{
"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
ระบบจะรวมเหตุการณ์ TargetSummary ไว้สำหรับคู่ (target, configuration) แต่ละรายการที่ดำเนินการ โดยมีผลลัพธ์ความสำเร็จโดยรวมซึ่งครอบคลุมการดำเนินการของเป้าหมายที่กำหนดค่าและทุกแง่มุมที่ใช้กับเป้าหมายที่กำหนดค่าดังกล่าว
TestResult
หากมีการขอทดสอบ ระบบจะส่งเหตุการณ์ TestResult สำหรับการพยายามทดสอบแต่ละครั้ง ชาร์ด และการเรียกใช้ต่อการทดสอบ ซึ่งช่วยให้ผู้ใช้ BEP ระบุการดำเนินการทดสอบที่ทำให้การทดสอบไม่ผ่านได้อย่างแม่นยำ และระบุเอาต์พุตการทดสอบ (เช่น บันทึก ไฟล์ test.xml) สำหรับการดำเนินการทดสอบแต่ละรายการ
TestSummary
หากมีการขอทดสอบ ระบบจะส่งเหตุการณ์ TestSummary สำหรับการทดสอบ (target,
configuration) แต่ละรายการ ซึ่งมีข้อมูลที่จำเป็นในการตีความผลลัพธ์ของการทดสอบ
ระบบจะรวมจำนวนการพยายาม ชาร์ด และการเรียกใช้ต่อการทดสอบเพื่อให้ผู้ใช้ BEP แยกความแตกต่างของอาร์ติแฟกต์ตามมิติข้อมูลเหล่านี้ได้ ระบบจะพิจารณาการพยายามและการเรียกใช้ต่อการทดสอบขณะสร้าง TestStatus โดยรวมเพื่อแยกความแตกต่างระหว่างการทดสอบ FLAKY กับการทดสอบ FAILED
UnstructuredCommandLine
เหตุการณ์นี้จะส่งแฟล็กบรรทัดคำสั่งที่ไม่ได้แยกวิเคราะห์ในรูปแบบสตริงตามที่เครื่องมือบิลด์พบหลังจากขยายไฟล์ .bazelrc ทั้งหมดและพิจารณาแฟล็ก --config แล้ว ซึ่งแตกต่างจาก CommandLine
คุณสามารถใช้เหตุการณ์ UnstructuredCommandLine เพื่อสร้างการดำเนินการคำสั่งที่กำหนดขึ้นใหม่ได้อย่างแม่นยำ
WorkspaceConfig
เหตุการณ์ WorkspaceConfig รายการเดียวมีข้อมูลการกำหนดค่าเกี่ยวกับพื้นที่ทำงาน เช่น รูทการดำเนินการ
WorkspaceStatus
เหตุการณ์ WorkspaceStatus รายการเดียวมีผลลัพธ์ของคำสั่งสถานะพื้นที่ทำงาน