Bazel フラグ クイック リファレンス

Bazel の膨大なコマンドライン フラグのリストを操作するのは簡単ではありません。このページでは、知っておくべき最も重要なフラグについて説明します。

役立つ全般オプション

次のフラグは、コマンドラインで明示的に設定することを目的としています。

フラグ 説明

--config

.bazelrc ファイル内のフラグを、デバッグやリリースビルド用の構成など、構成に整理できます。追加の構成グループは --config=<group> で選択できます。

--keep_going

Bazel は、ビルドとテストの実行を可能な限り続行しようとします。デフォルトでは、Bazel は早期に失敗します。

--remote_download_outputs

リモート実行またはキャッシュ(ディスクとリモートの両方)を使用する場合は、次のように(中間)ビルド アーティファクトをすべてダウンロードすることを Bazel に通知できます。
--remote_download_outputs=all
デフォルトでは、Bazel は最終バイナリなどのトップレベル アーティファクトと、ローカル アクションに必要な中間アーティファクトのみをダウンロードします。

--stamp

ビルド情報(ユーザー、タイムスタンプ)をバイナリに追加します。

ビルドとテストの問題を特定する

次のフラグは、Bazel のビルドエラーやテストエラーをよりよく理解するのに役立ちます。

フラグ 説明

--announce_rc

ユーザー定義、マシン定義、プロジェクト定義の .bazelrc ファイルによって暗黙的に設定されるフラグが表示されます。

--auto_output_filter

デフォルトでは、Bazel はログ スパムの発生を防ぐよう努め、コンパイラ ワーニングと、コマンドラインからリクエストされたパッケージとサブパッケージの Starlark デバッグ出力のみを表示します。すべてのフィルタを無効にするには、--auto_output_filter=none を設定します。

--sandbox_debug

サンドボックス化エラーを詳しく確認できます。Bazel がデフォルトでビルドをサンドボックス化する理由と、サンドボックス化される内容について詳しくは、サンドボックス化のドキュメントをご覧ください。

--subcommands (-s)

ビルド中に Bazel が実行するすべてのコマンドの包括的なリストを表示します(成功または失敗に関係なく)。

起動

フラグ 説明

--bazelrc

デフォルトの Bazel オプションは .bazelrc ファイルで指定できます。複数の .bazelrc ファイルが存在する場合は、--bazelrc=<path to the .bazelrc file> を追加して、使用する .bazelrc ファイルを選択できます。

--host_jvm_args

Bazel サーバーが使用する RAM の量を制限します。たとえば、次のコマンドでは Bazel ヒープサイズを 3 GB に制限します。
--host_jvm_args=-Xmx3g

--output_base

Bazel の出力ツリーを制御します。Bazel は、ログなどのビルド出力をソースツリー自体に保存しません。代わりに、この目的に別の出力ツリーを使用します。

Bazel テスト

次のフラグは Bazel テストに関連しています。

フラグ 説明

--java_debug

Java テストが実行される前に、デバッガ接続を待機します。

--runs_per_test

テストを実行する回数。たとえば、テストを N 回実行するには、--runs_per_test=N を追加します。これは、不安定なテストをデバッグし、修正によってテストが常に合格するかどうかを確認するのに役立ちます。

--test_filter

このフラグは、変更によってテストが破損した場合など、単一のテストメソッドを反復処理する場合に特に便利です。テストスイート内のすべてのテストメソッドを再実行するのではなく、失敗した特定のテストにのみ集中できます。これにより、フィードバックを迅速に提供し、デバッグを効率化できます。このフラグは、リアルタイム テスト出力のために --test_output=streamed と組み合わせて使用されることがよくあります。

--test_output

出力モードを指定します。デフォルトでは、Bazel はテスト出力をローカル ログファイルにキャプチャします。エラーのあるテストを反復処理する場合は、通常、--test_output=streamed を使用してテスト出力をリアルタイムで確認します。

Bazel 実行

次のフラグは Bazel の実行に関連しています。

フラグ 説明

--run_under

実行可能ファイルの呼び出し方法を変更します。たとえば、--run_under="strace -c" はデバッグによく使用されます。

ユーザー固有の bazelrc オプション

次のフラグは、ユーザー固有の .bazelrc オプションに関連しています。

フラグ 説明

--disk_cache

Bazel がアクションとアクション出力を読み書きできるディレクトリのパス。ディレクトリが存在しない場合は作成されます。コマンドに --disk_cache=<path> を追加すると、複数のブランチまたはワークスペース間でビルド アーティファクトを共有し、Bazel ビルドを高速化できます。

--jobs

実行する同時実行ジョブの数。これは通常、リモート実行を使用する場合にのみ必要です。リモート実行では、リモート ビルドクラスタがローカルのコア数よりも多くのジョブを実行します。

--local_resources

ローカルで実行されるアクションによって消費される CPU または RAM の量を制限します。

--sandbox_base

サンドボックスがこのパスの下にサンドボックス ディレクトリを作成できるようにします。デフォルトでは、Bazel はローカル アクションをサンドボックス化された状態で実行します。これにより、ビルドにオーバーヘッドが発生します。

プロジェクト固有の bazelrc オプション

次のフラグは、プロジェクト固有の .bazelrc オプションに関連しています。

フラグ 説明

--flaky_test_attempts

テストが失敗した場合に、各テストを指定回数まで再試行します。これは継続的インテグレーションで特に役立ちます。合格に複数回の試行が必要なテストは、テストの概要で FLAKY とマークされます。

--remote_cache

キャッシュ エンドポイントの URI。リモート キャッシュを設定すると、Bazel ビルドを高速化できます。ローカル ディスク キャッシュと組み合わせることができます。

--remote_download_regex

--remote_download_outputs の設定に関係なく、パスがこのパターンに一致するリモートビルド出力を強制的にダウンロードします。このフラグを繰り返すことで、複数のパターンを指定できます。

--remote_executor

リモート実行エンドポイントの HOST または HOST:PORT。リモート実行サービスを使用している場合は、これを渡します。多くの場合、--remote_instance_name=<name> を追加する必要があります。

--remote_instance_name

リモート実行 API で instance_name として渡す値。

--show-timestamps

指定すると、Bazel によって生成された各メッセージに、メッセージが表示された時間を示すタイムスタンプが追加されます。これは、どのステップにどのくらいの時間がかかったかをすばやく把握するのに役立ちます。

--spawn_strategy

リモート実行でも、一部のビルド操作をローカルで実行するほうが速い場合があります。これは、ビルドクラスタの容量、ネットワーク速度、ネットワーク遅延などの要因によって異なります。