กิจกรรม 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
และ 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
ที่สร้างขึ้นระหว่างการประเมินคำสั่ง
การลดลงที่รวมอยู่ชั่วคราวจะระบุด้วย 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 สร้างขึ้นระหว่างการดำเนินการกับคำสั่ง นอกจากนี้ เหตุการณ์เหล่านี้ยังสร้างขึ้นโดยอัตโนมัติตามที่จำเป็นเพื่อประกาศเหตุการณ์ที่ไม่ได้ประกาศโดยเหตุการณ์ "parent" เชิงตรรกะ (โดยเฉพาะ 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
รายการเดียวจะมีผลของคำสั่งสถานะพื้นที่ทำงาน