Bảng chú giải thuật ngữ về giao thức sự kiện về bản dựng

Báo cáo vấn đề Xem nguồn Hằng đêm · 7.3 · 7.2 · 7.1 · 7 · 6,5

Mỗi loại sự kiện BEP có ngữ nghĩa riêng, được ghi lại ở mức tối thiểu build_event_stream.proto. Bảng thuật ngữ sau đây mô tả từng loại sự kiện.

Đã hủy

Không giống như các sự kiện khác, Aborted không có loại mã nhận dạng tương ứng vì sự kiện Aborted thay thế các sự kiện thuộc loại khác. Sự kiện này cho biết rằng bản dựng bị chấm dứt sớm và mã sự kiện mà bản dựng xuất hiện không được tạo thông thường. Aborted chứa nội dung mô tả enum và thân thiện với con người để giải thích tại sao bản dựng không hoàn tất.

Ví dụ: nếu một bản dựng đang đánh giá một mục tiêu khi người dùng làm gián đoạn Bazel, BEP chứa một sự kiện như sau:

{
  "id": {
    "targetCompleted": {
      "label": "//:foo",
      "configuration": {
        "id": "544e39a7f0abdb3efdd29d675a48bc6a"
      }
    }
  },
  "aborted": {
    "reason": "USER_INTERRUPTED"
  }
}

ActionExecuted

Cung cấp thông tin chi tiết về việc thực thi một tệp cụ thể Thao tác trong một bản dựng. Theo mặc định, sự kiện này là chỉ đưa vào BEP đối với những hành động không thành công để hỗ trợ việc xác định nguyên nhân gốc lỗi bản dựng. Người dùng có thể đặt cờ --build_event_publish_all_actions để bao gồm tất cả sự kiện ActionExecuted.

BuildFinished

Hệ thống sẽ gửi một sự kiện BuildFinished sau khi lệnh hoàn tất và bao gồm mã thoát cho lệnh. Sự kiện này cung cấp thông tin đáng tin cậy thông tin về thành công/thất bại.

BuildMetadata

Chứa nội dung đã phân tích cú pháp của cờ --build_metadata. Sự kiện này đã tồn tại để hỗ trợ việc tích hợp Bazel với các công cụ khác bằng cách hệ thống ống nước dữ liệu bên ngoài (chẳng hạn như giá trị nhận dạng).

BuildMetrics

Một sự kiện BuildMetrics được gửi ở cuối mỗi lệnh và bao gồm bộ đếm/kích thước hữu ích cho việc định lượng hành vi của công cụ xây dựng trong thời gian . Các chỉ số này cho biết công việc đã thực sự thực hiện và không được tính vào bộ nhớ đệm được sử dụng lại.

Lưu ý rằng memory_metrics có thể không được điền sẵn nếu không có rác Java trong quá trình thực thi lệnh. Người dùng có thể đặt Tuỳ chọn --memory_profile=/dev/null buộc rác trình thu thập để chạy ở cuối lệnh nhằm điền vào memory_metrics.

{
  "id": {
    "buildMetrics": {}
  },
  "buildMetrics": {
    "actionSummary": {
      "actionsExecuted": "1"
    },
    "memoryMetrics": {},
    "targetMetrics": {
      "targetsLoaded": "9",
      "targetsConfigured": "19"
    },
    "packageMetrics": {
      "packagesLoaded": "5"
    },
    "timingMetrics": {
      "cpuTimeInMs": "1590",
      "wallTimeInMs": "359"
    }
  }
}

BuildStarted

Sự kiện đầu tiên trong luồng BEP, BuildStarted bao gồm siêu dữ liệu mô tả trước khi bắt đầu bất kỳ công việc có ý nghĩa nào.

BuildToolLogs

Một sự kiện BuildToolLogs duy nhất được gửi ở cuối lệnh, bao gồm cả URI tệp được tạo bởi công cụ xây dựng có thể hỗ trợ việc hiểu hoặc gỡ lỗi hành vi của công cụ xây dựng. Một số thông tin có thể được đưa vào cùng dòng.

{
  "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 chứa nhiều sự kiện CommandLine chứa biểu diễn của tất cả đối số dòng lệnh (bao gồm các tuỳ chọn và đối số chưa diễn giải). Mỗi sự kiện CommandLine đều có một nhãn trong StructuredCommandLineId cho biết nội dung đó truyền tải ý nghĩa gì; ba sự kiện như vậy xuất hiện trong BEP:

  • "original": Được xây dựng lại dòng lệnh khi Bazel nhận được từ Bazel mà không có các lựa chọn khởi động có nguồn gốc từ tệp .rc.
  • "canonical": Dòng lệnh hiệu quả với các tệp .rc được mở rộng và đã áp dụng chính sách gọi ra.
  • "tool": Được điền sẵn từ tuỳ chọn --experimental_tool_command_line. Chiến dịch này rất hữu ích khi truyền tải dòng lệnh của công cụ gói Bazel qua BEP. Đây có thể là thông báo vùng đệm giao thức nhị phân CommandLine được mã hoá dưới dạng base64 được sử dụng trực tiếp hoặc chuỗi được phân tích cú pháp nhưng không được diễn giải (như là các tuỳ chọn của công cụ có thể khác với tuỳ chọn của Bazel).

Cấu hình

Một sự kiện Configuration được gửi cho mỗi configuration được dùng trong các mục tiêu cấp cao nhất trong một bản dựng. Có ít nhất một sự kiện cấu hình luôn hiện diện. id được TargetConfigured sử dụng lại và TargetComplete mã sự kiện. Đây là mã sự kiện cần thiết để phân biệt các sự kiện đó trong nhiều cấu hình.

{
  "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

Thử nghiệm. Nếu --experimental_convenience_symlinks_bep_event được đặt, một sự kiện ConvenienceSymlinksIdentified duy nhất được tạo bởi Các lệnh build để cho biết cách quản lý các đường liên kết tượng trưng trong không gian làm việc. Điều này cho phép các công cụ xây dựng gọi Bazel từ xa, sau đó sắp xếp như thể Bazel được chạy cục bộ.

{
  "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"
      }
    ]
  }
}

Tìm nạp

Cho biết hoạt động Tìm nạp đã xảy ra trong quá trình thực thi lệnh. Không giống như các sự kiện khác, nếu kết quả tìm nạp đã lưu vào bộ nhớ đệm được sử dụng lại, thì sự kiện này không xuất hiện trong luồng BEP.

NamedSetOfFiles

Sự kiện NamedSetOfFiles báo cáo một cấu trúc khớp với một depset tệp được tạo trong quá trình đánh giá lệnh. Các phần phụ thuộc được đưa vào qua trung gian được xác định bởi NamedSetOfFilesId.

Để biết thêm thông tin về cách diễn giải các sự kiện NamedSetOfFiles của một luồng, hãy xem Trang ví dụ về BEP.

OptionsParsed

Một sự kiện OptionsParsed liệt kê tất cả tuỳ chọn được áp dụng cho lệnh, tách các tuỳ chọn khởi động khỏi tuỳ chọn lệnh. Nền tảng này cũng bao gồm InvocationPolicy, nếu có.

{
  "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

Sự kiện PatternExpanded cho biết tập hợp tất cả mục tiêu khớp với mẫu được cung cấp trên dòng lệnh. Đối với các lệnh thành công, chỉ có một sự kiện với tất cả mẫu trong PatternExpandedId và tất cả mục tiêu trong Phần tử con của sự kiện PatternExpanded. Nếu mẫu mở rộng thành bất kỳ test_suite là tập hợp các mục tiêu kiểm thử mà test_suite bao gồm. Đối với mỗi không thể phân giải, BEP chứa Aborted bổ sung có PatternExpandedId xác định mẫu.

{
  "id": {
    "pattern": {
      "pattern":["//base:all"]
    }
  },
  "children": [
    {"targetConfigured":{"label":"//base:foo"}},
    {"targetConfigured":{"label":"//base:foobar"}}
  ],
  "expanded": {
    "testSuiteExpansions": {
      "suiteLabel": "//base:suite",
      "testLabels": "//base:foo_test"
    }
  }
}

Tiến trình

Các sự kiện tiến trình chứa dữ liệu đầu ra chuẩn và sai số chuẩn do Bazel tạo ra trong quá trình thực thi lệnh. Các sự kiện này cũng được tạo tự động khi cần để thông báo các sự kiện chưa được bố cục logic "cha mẹ" công bố sự kiện (trong cụ thể là NamedSetOfFiles.)

TargetComplete

Đối với mỗi tổ hợp (target, configuration, aspect) hoàn thành giai đoạn thực thi, sự kiện TargetComplete được đưa vào BEP. Sự kiện có chứa thành công/thất bại của mục tiêu và các nhóm đầu ra được yêu cầu của mục tiêu.

{
  "id": {
    "targetCompleted": {
      "label": "//examples/py:bep",
      "configuration": {
        "id": "a5d130b0966b4a9ca2d32725aa5baf40e215bcfc4d5cdcdc60f5cc5b4918903b"
      }
    }
  },
  "completed": {
    "success": true,
    "outputGroup": [
      {
        "name": "default",
        "fileSets": [
          {
            "id": "0"
          }
        ]
      }
    ]
  }
}

TargetConfigured

Đối với mỗi Mục tiêu hoàn thành giai đoạn phân tích, sự kiện TargetConfigured sẽ là có trong BEP. Đây là nguồn có căn cứ đáng tin cho "loại quy tắc" của mục tiêu . (Các) cấu hình được áp dụng cho mục tiêu sẽ xuất hiện trong thông báo phần tử con của sự kiện.

Ví dụ: việc tạo bản dựng với các tuỳ chọn --experimental_multi_cpu có thể tạo ra sự kiện TargetConfigured sau đây cho một mục tiêu duy nhất có hai cấu hình:

{
  "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

Đối với mỗi cặp (target, configuration) được thực thi, một TargetSummary đi kèm với kết quả thành công tổng hợp (bao gồm cả của mục tiêu và tất cả các khía cạnh đã áp dụng cho mục tiêu đã định cấu hình đó.

TestResult

Nếu có yêu cầu kiểm thử, thì hệ thống sẽ gửi một sự kiện TestResult cho mỗi lần kiểm thử, phân đoạn và chạy mỗi lần kiểm thử. Điều này cho phép người tiêu dùng BEP xác định chính xác hành động kiểm thử không thực hiện được quy trình kiểm thử và xác định kết quả kiểm thử (chẳng hạn như nhật ký, test.xml) cho mỗi hành động kiểm thử.

TestSummary

Nếu có yêu cầu kiểm thử, thì một sự kiện TestSummary sẽ được gửi cho mỗi (target, configuration) kiểm thử, chứa thông tin cần thiết để diễn giải kết quả kiểm thử kết quả. Bao gồm số lần thử, phân đoạn và lần chạy trên mỗi lần kiểm thử để bật Người tiêu dùng BEP để phân biệt các cấu phần phần mềm trên các phương diện này. Số lần thử và số lần chạy cho mỗi bài kiểm thử đều được xem xét trong khi tạo TestStatus tổng hợp để phân biệt kiểm thử FLAKY với kiểm thử FAILED.

UnstructuredCommandLine

Không giống như CommandLine, sự kiện này mang dòng lệnh chưa được phân tích cú pháp cờ ở dạng chuỗi mà công cụ xây dựng gặp phải sau khi mở rộng tất cả .bazelrc tệp và hãy xem xét cờ --config.

Sự kiện UnstructuredCommandLine có thể được dùng để tái tạo chính xác một thực thi lệnh cụ thể.

WorkspaceConfig

Một sự kiện WorkspaceConfig chứa thông tin cấu hình liên quan đến không gian làm việc, chẳng hạn như gốc thực thi.

WorkspaceStatus

Một sự kiện WorkspaceStatus có chứa kết quả của trạng thái không gian làm việc .