各 BEP イベントタイプには独自のセマンティクスがあり、 build_event_stream.proto. 以下の用語集では、各イベントタイプについて説明します。
中止
他のイベントとは異なり、Aborted
には対応する ID タイプがありません。理由は次のとおりです。
Aborted
イベントは、他のタイプのイベントを置き換えます。このイベントは、
ビルドが早期に終了し、ビルドが表示されているイベント ID が生成されなかった
表示されます。Aborted
には、列挙型とわかりやすい説明が含まれています。
理由が表示されます。
たとえば、ユーザーが 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
フラグの解析済みコンテンツが含まれます。この予定は存在します
外部データ(
あります。
BuildMetrics
各コマンドの最後に BuildMetrics
イベント 1 件が送信され、次の内容が含まれます。
ビルドツールの動作を定量化するのに有用なカウンタ/ゲージ。
使用できます。これらの指標は実際に行われた作業を示します。キャッシュに保存された作業はカウントされません。
基づいています。
Java ガベージがない場合、memory_metrics
に値が入力されない場合があります。
コレクションにエクスポートされます。ユーザーは
--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
コマンドの最後に、URI を含む単一の BuildToolLogs
イベントが送信されます。
理解やデバッグに役立つ可能性がある、ビルドツールによって生成されたファイルの数。
ビルドツールの動作を変更できます。一部の情報はインラインで挿入できます。
{
"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
には、
どのような表現が伝わるかを示します。BEP には、次のような 3 つのイベントが表示されます。
"original"
: Bazel が Bazel から受け取ったように再構築されたコマンドライン 起動オプションなしで .rc ファイルから作成されます。"canonical"
: 展開された .rc ファイルが展開された有効なコマンドライン 呼び出しポリシーが適用されます。"tool"
:--experimental_tool_command_line
オプションから入力されます。この は、BEP を介して Bazel をラップするツールのコマンドラインを伝えるのに役立ちます。 これは、base64 でエンコードされたCommandLine
バイナリ プロトコル バッファ メッセージなどです。 直接使用される文字列、または解析されて解釈されない文字列( ツールのオプションが Bazel のオプションと異なる場合があります)。
構成
Configuration
イベントは configuration
ごとに送信されます。
使用しないでください。少なくとも 1 つの構成イベントが
存在する必要がありますid
は 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"
}
]
}
}
フェッチ
Fetch オペレーションがコマンド実行の一部として発生したことを示します。 他のイベントとは異なり、キャッシュに保存された取得結果が再利用された場合、このイベントでは BEP ストリームに表示されます。
NamedSetOfFiles
NamedSetOfFiles
イベントは、
コマンドの評価中に生成されたファイルの depset
。
推移的に含まれる depset は NamedSetOfFilesId
で識別されます。
ストリームの NamedSetOfFiles
イベントの解釈について詳しくは、
BEP の例のページ。
OptionsParsed
1 つの 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
イベントは、パターンに一致するすべてのターゲットのセットを示します。
コマンドラインで指定する必要があります。コマンドが成功すると、イベントが 1 つ表示されます。
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"
}
}
}
進行状況
Progress イベントには、Bazel によって生成された標準出力と標準エラーが含まれます。 API 呼び出しによって 発生しますこれらのイベントは、必要に応じて 論理的な「親」によってアナウンスされていないイベントを通知イベント( NamedSetOfFiles を使用します)。
TargetComplete
次の (target, configuration, aspect)
の組み合わせごとに、
実行フェーズでは、BEP に TargetComplete
イベントが含まれます。イベントに含まれるもの
ターゲットの成功/失敗とターゲットが要求した出力グループ。
{
"id": {
"targetCompleted": {
"label": "//examples/py:bep",
"configuration": {
"id": "a5d130b0966b4a9ca2d32725aa5baf40e215bcfc4d5cdcdc60f5cc5b4918903b"
}
}
},
"completed": {
"success": true,
"outputGroup": [
{
"name": "default",
"fileSets": [
{
"id": "0"
}
]
}
]
}
}
TargetConfigured
分析フェーズを完了したターゲットごとに、TargetConfigured
イベントが発生します。
BEP に含まれています。これは、ターゲットの「ルールの種類」の信頼できるソースです
属性です。ターゲットに適用された構成は、通知された
子になります。
たとえば、--experimental_multi_cpu
オプションを指定してビルドすると、
1 つのターゲットに対する次の TargetConfigured
イベントは、
構成:
{
"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
テストをリクエストすると、テストの (target,
configuration)
ごとに、テストの解釈に必要な情報を含む TestSummary
イベントが送信されます。
表示されます。テストあたりの試行回数、シャード数、実行回数が含まれるため、
BEP コンシューマーにより、これらのディメンション間でアーティファクトを区別できます。試行
集計 TestStatus
を生成するときに、テストごとの実行が考慮されます。
FLAKY
テストと FAILED
テストを区別します。
UnstructuredCommandLine
CommandLine とは異なり、このイベントには未解析のコマンドラインが含まれます。
すべて展開した後にビルドツールによって検出された文字列形式のフラグ
.bazelrc
ファイルと
考慮する必要があります。--config
UnstructuredCommandLine
イベントは、
表示されます。
WorkspaceConfig
1 つの WorkspaceConfig
イベントには、次の要素に関する構成情報が含まれます。
(実行ルートなど)にもアクセスできます。
WorkspaceStatus
1 つの WorkspaceStatus
イベントに、ワークスペースのステータスの結果が含まれる
コマンドを実行します。