ประเภทเหตุการณ์ BEP แต่ละประเภทมีความหมายของตัวเอง ซึ่งมีการบันทึกไว้ใน build_event_stream.proto พจนานุกรมต่อไปนี้อธิบายเหตุการณ์แต่ละประเภท
ล้มเลิกแล้ว
Aborted
ไม่มีประเภทรหัสที่สอดคล้องกันเนื่องจากเหตุการณ์ Aborted
แทนที่เหตุการณ์ประเภทอื่นๆ เหตุการณ์นี้บ่งชี้ว่า
บิลด์สิ้นสุดก่อนเวลาอันควร และไม่ได้สร้างรหัสเหตุการณ์ที่ปรากฏ
ตามปกติ Aborted
มีการแจงนับและคำอธิบายที่มนุษย์อ่านได้เพื่ออธิบาย
สาเหตุที่บิลด์ไม่เสร็จสมบูรณ์
เช่น หากบิลด์กําลังประเมินเป้าหมายเมื่อผู้ใช้ขัดจังหวะ Bazel BEP จะมีเหตุการณ์ดังนี้
{
"id": {
"targetCompleted": {
"label": "//:foo",
"configuration": {
"id": "544e39a7f0abdb3efdd29d675a48bc6a"
}
}
},
"aborted": {
"reason": "USER_INTERRUPTED"
}
}
ActionExecuted
ให้รายละเอียดเกี่ยวกับการดำเนินการของการดำเนินการที่เฉพาะเจาะจงในบิลด์ โดยค่าเริ่มต้น เหตุการณ์นี้จะรวมอยู่ใน BEP เฉพาะสำหรับการดำเนินการที่ไม่สำเร็จ เพื่อช่วยระบุสาเหตุหลัก
ของการสร้างที่ไม่สำเร็จ ผู้ใช้สามารถตั้งค่า--build_event_publish_all_actions
flag
เพื่อรวมเหตุการณ์ 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
คำสั่ง build
จะสร้างเหตุการณ์ ConvenienceSymlinksIdentified
รายการเดียวเพื่อระบุวิธีจัดการลิงก์สัญลักษณ์ในพื้นที่ทำงาน
ซึ่งช่วยให้สร้างเครื่องมือบิลด์ที่เรียกใช้ 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
ของไฟล์ที่สร้างขึ้นระหว่างการประเมินคำสั่ง
ชุดทรัพยากร Dependency ที่รวมไว้โดยอ้อมจะระบุด้วย NamedSetOfFilesId
ดูข้อมูลเพิ่มเติมเกี่ยวกับการตีความเหตุการณ์ NamedSetOfFiles
ของสตรีมได้ที่หน้าตัวอย่าง BEP
OptionsParsed
OptionsParsed
event รายการเดียวจะแสดงตัวเลือกทั้งหมดที่ใช้กับคำสั่ง
โดยแยกตัวเลือกการเริ่มต้นออกจากตัวเลือกคำสั่ง รวมถึง 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
children ของเหตุการณ์ หากรูปแบบขยายไปถึง
test_suite
s ชุดเป้าหมายการทดสอบที่รวมไว้โดย 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
เหตุการณ์เดียวประกอบด้วยผลลัพธ์ของสถานะพื้นที่ทำงาน
คำสั่ง