กิจกรรม 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 garbage ระหว่างการดำเนินการของคำสั่ง ผู้ใช้อาจตั้งค่าตัวเลือก --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
เหตุการณ์นี้จะใช้แฟล็กบรรทัดคำสั่งที่ไม่ได้แยกวิเคราะห์ในรูปแบบสตริงที่เครื่องมือสร้างพบหลังจากขยายไฟล์ .bazelrc
ทั้งหมดและพิจารณา Flag --config
ซึ่งแตกต่างจาก CommandLine
ระบบอาจใช้เหตุการณ์ UnstructuredCommandLine
เพื่อจำลองการเรียกใช้คำสั่งอย่างถูกต้อง
WorkspaceConfig
เหตุการณ์ WorkspaceConfig
รายการเดียวมีข้อมูลการกำหนดค่าเกี่ยวกับพื้นที่ทำงาน เช่น รูทการดำเนินการ
WorkspaceStatus
เหตุการณ์ WorkspaceStatus
รายการเดียวจะมีผลลัพธ์ของคำสั่งสถานะพื้นที่ทำงาน