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