อภิธานศัพท์เกี่ยวกับโปรโตคอลเหตุการณ์

รายงานปัญหา ดูแหล่งที่มา ตอนกลางคืน · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

กิจกรรม 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",
      "--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 เดียวจะมีผลลัพธ์ของสถานะพื้นที่ทำงาน