ビルド イベント プロトコルに関する用語集

<ph type="x-smartling-placeholder"></ph> 問題を報告する <ph type="x-smartling-placeholder"></ph> ソースを表示 夜間 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

各 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 つの構成イベントが 存在する必要がありますidTargetConfigured によって再利用され、 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",
      "--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 イベントに、ワークスペースのステータスの結果が含まれる コマンドを実行します。