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 チュートリアルに直接アクセスしてください。