Bazel システムは、有効期間が長いサーバー プロセスとして実装されています。これにより、
バッチ指向の実装では不可能な多くの最適化を
BUILD ファイル、依存関係グラフ、その他のメタデータを 1 つの
次世代の基盤となります。これにより、増分ビルドの速度が向上し、
build
や query
などの異なるコマンドを使用して、同じキャッシュを
クエリが非常に高速になります。各サーバーが処理できるのは最大で 1 つの
一度に呼び出す必要はありません。それ以上の同時呼び出しでは、ブロックまたは
フェイル ファスト(--block_for_lock
を参照)。
bazel
を実行すると、クライアントが実行されます。クライアントがサーバーを見つける
出力ベースに基づきます。出力ベースは
ベース ワークスペース ディレクトリのパスとユーザー ID によって決まるため、
出力ベースも複数存在するため
Bazel サーバー プロセスを使用します。同じワークステーション上の複数のユーザーで
出力ベースが異なるため、同じワークスペースで同時にビルドできます。
(異なるユーザー ID)。
実行中のサーバー インスタンスが見つからなければ、クライアントは新しいインスタンスを起動します。これは、
出力ベースがすでに存在するかどうかを確認することで行います。
アーカイブはすでに展開されています。出力ベースが存在しない場合は、
クライアントがアーカイブのファイルを解凍し、mtime
を 9 年の日付に設定します。
使用できます。インストール後、クライアントは、このアプリケーションの mtime
が
解凍したファイルは、インストールの改ざんを防ぐために、はるかに古い日付と等しい
発生します。
サーバー プロセスは、非アクティブ状態(デフォルトでは 3 時間、
これは起動オプション --max_idle_secs
で変更できます)。最大のメリット
サーバーが稼働中であることは
ユーザーにはわかりませんが
それを念頭に置くと良い場合がありますたとえば、Python や Curl など、
多数の自動ビルドを実行するアプリの場合、
アイドル状態のサーバーが大量に蓄積しないようにします。これを行うには、
終了したら明示的にシャットダウンするか、
短いタイムアウト期間があります。
Bazel サーバー プロセスの名前が ps x
または ps -e f
の出力に表示されます。
bazel(dirname)
の形式。ここで、dirname はアプリケーションのベース名です。
ディレクトリを作成します。例:
ps -e f
16143 ? Sl 3:00 bazel(src-johndoe2) -server -Djava.library.path=...
これにより、特定のプロセスがどのサーバー プロセスに属しているかを簡単に
見てみましょう。(ps
、Bazel サーバーに対する他のオプションがあるので注意してください)。
Bazel サーバーは java
という名前を付けることができます)。
shutdown コマンドを使用します。
bazel
を実行すると、クライアントはまずサーバーが適切であることを確認します。
version;そうでない場合、サーバーは停止して新しいサーバーが起動します。これにより
長時間実行されるサーバー プロセスを使用しても、
説明します。