Bazel は、Make、Maven、Gradle と同様のオープンソースのビルドとテストのツールです。人が読める高レベルのビルド言語を使用します。Bazel は、複数の言語のプロジェクトをサポートし、複数のプラットフォームのビルド出力を生成します。Bazel は、複数のリポジトリにまたがる大規模なコードベースと、多数のユーザーをサポートしています。
利点
Bazel には次のような利点があります。
上位レベルのビルド言語。Bazel は、抽象的で人間が読める言語を使用して、プロジェクトのビルド プロパティを高いセマンティクス レベルで記述します。他のツールとは異なり、Bazel はライブラリ、バイナリ、スクリプト、データセットのコンセプトに基づいて動作するため、コンパイラやリンカーなどのツールへの個々の呼び出しを記述する複雑さから解放されます。
Bazel は高速で信頼性が高い。Bazel は、以前に実行されたすべての作業をキャッシュに保存し、ファイル コンテンツとビルドコマンドの両方の変更を追跡します。これにより、Bazel は再ビルドが必要なタイミングを把握し、必要なものだけを再ビルドします。ビルドをさらに高速化するには、高度に並列化された増分方式でビルドするようにプロジェクトを設定します。
Bazel はマルチプラットフォームです。Bazel は Linux、macOS、Windows で動作します。Bazel は、同じプロジェクトから、パソコン、サーバー、モバイルなど、複数のプラットフォーム向けのバイナリとデプロイ可能なパッケージをビルドできます。
Bazel の音階。Bazel は、10 万個以上のソースファイルを含むビルドを処理しながら、アジリティを維持します。複数のリポジトリと数万のユーザーベースで動作します。
Bazel は拡張可能です。多くの言語がサポートされており、Bazel を拡張して他の言語やフレームワークをサポートすることもできます。
Bazel の使用
通常、Bazel でプロジェクトをビルドまたはテストするには、次の操作を行います。
Bazel をセットアップします。Bazel をダウンロードしてインストールします。
プロジェクトのワークスペースを設定します。これは、Bazel がビルド入力と
BUILD
ファイルを検索し、ビルド出力を保存するディレクトリです。BUILD
ファイルを作成する。このファイルは、ビルドする内容とビルド方法を Bazel に伝えます。BUILD
ファイルは、ドメイン固有の言語である Starlark を使用してビルド ターゲットを宣言することで作成します。(こちらの例をご覧ください)。ビルド ターゲットは、Bazel がビルドする一連の入力アーティファクトとその依存関係、Bazel がビルドに使用するビルドルール、ビルドルールを構成するオプションを指定します。
ビルドルールでは、Bazel が使用するビルドツール(コンパイラやリンカーなど)とその構成を指定します。Bazel には、サポートされているプラットフォームでサポートされている言語の最も一般的なアーティファクト タイプをカバーする多数のビルドルールが付属しています。
コマンドラインから Bazel を実行します。Bazel は、出力をワークスペース内に配置します。
ビルドに加えて、Bazel を使用してテストを実行したり、ビルドをクエリしてコード内の依存関係をトレースしたりすることもできます。
Bazel ビルドプロセス
ビルドまたはテストを実行すると、Bazel は次の処理を行います。
ターゲットに関連する
BUILD
ファイルを読み込みます。最終的なビルド出力が生成されるまで、入力に対してビルド アクションを実行します。
以前のビルド作業はすべてキャッシュに保存されるため、Bazel はキャッシュに保存されたアーティファクトを特定して再利用し、変更された部分のみを再ビルドまたは再テストできます。正確性をさらに強化するには、サンドボックスを使用してビルドとテストを密閉して実行するように Bazel を設定し、スキューを最小限に抑え、再現性を最大化します。
アクション グラフ
アクション グラフは、ビルド アーティファクト、それらの関係、Bazel が実行するビルド アクションを表します。このグラフのおかげで、Bazel はファイル コンテンツの変更だけでなく、ビルドやテスト コマンドなどのアクションの変更も追跡し、以前に実行されたビルド作業を把握できます。グラフを使用すると、コード内の依存関係を簡単にトレースすることもできます。
チュートリアルのスタートガイド
Bazel を始めるには、スタートガイドをご覧ください。または、次の Bazel チュートリアルに直接アクセスしてください。