Bazel の概要

問題を報告する ソースを表示

Bazel は、Make、Maven、Gradle に似たオープンソースのビルドおよびテストツールです。人間が読み取れる高レベルのビルド言語が使用されます。Bazel は、複数の言語のプロジェクトをサポートし、複数のプラットフォームの出力を作成します。Bazel は、複数のリポジトリや多数のユーザーにわたる大規模なコードベースをサポートしています。

メリット

Bazel には次のようなメリットがあります。

  • 高レベルのビルド言語。Bazel は、ユーザーが理解できる抽象的な言語を使用して、プロジェクトのビルド プロパティを高い意味合いで記述します。他のツールとは異なり、Bazel はライブラリ、バイナリ、スクリプト、データセットのコンセプトに基づいており、コンパイラやリンカーなどのツールに個々の呼び出しを記述する際の複雑さから保護します。

  • Bazel は高速で、信頼性に優れています。Bazel は、以前に行われたすべての作業をキャッシュに保存し、ファイルの内容とビルドコマンドの両方に対する変更を追跡します。これにより、Bazel は再ビルドが必要なタイミングを認識し、再構築するだけで済みます。ビルドをさらに高速化するには、高度に並列的かつ増分的にビルドされるようにプロジェクトを設定します。

  • Bazel はマルチプラットフォームBazel は Linux、macOS、Windows で動作します。Bazel では、同じプロジェクトから、パソコン、サーバー、モバイルなどの複数のプラットフォーム用のバイナリとデプロイ可能なパッケージをビルドできます。

  • Bazel によるスケーリング。Bazel は 100,000 以上のソースファイルでビルドを処理し、アジリティを維持します。数万ものリポジトリやユーザーベースに対応しています。

  • Bazel は拡張可能です。多くの言語がサポートされています。Bazel を拡張して、他の言語やフレームワークをサポートできます。

Bazel の使用

Bazel でプロジェクトをビルドまたはテストするには、通常、次の操作を行います。

  1. Bazel をセットアップするBazel をダウンロードしてインストールします。

  2. プロジェクト ワークスペースを設定します。ワークスペースは、Bazel がビルド入力ファイルと BUILD ファイルを検索し、ビルド出力を保存するディレクトリです。

  3. BUILD ファイルを作成する。これを使用して、Bazel でビルドする対象とビルド方法を指示します。

    BUILD ファイルを作成するには、ドメイン固有の言語である Starlark を使用してビルド ターゲットを宣言します。(こちらの例をご覧ください)。

    ビルド ターゲットは、Bazel がビルドする一連の入力アーティファクト、それらの依存関係、Bazel がビルドに使用するビルドルール、ビルドルールを構成するオプションを指定します。

    ビルドルールは、コンパイラやリンカーなどのビルドツール、およびそれらの構成を指定します。Bazel には、サポートされているプラットフォームでサポートされている言語で最も一般的なアーティファクト タイプに対応した多数のビルドルールが付属しています。

  4. コマンドラインから Bazel を実行します。Bazel は、出力をワークスペース内に配置します。

ビルドに加えて、Bazel を使用してビルドのテストクエリを行い、コード内の依存関係をトレースすることもできます。

Bazel ビルドプロセス

ビルドまたはテストを実行するとき、Bazel は次の処理を行います。

  1. ターゲットに関連する BUILD ファイルを読み込みます。

  2. 入力とその依存関係分析し、指定されたビルドルールを適用して、アクション グラフを生成します。

  3. 最終的なビルド出力が生成されるまで入力に対してビルド アクションを実行します。

以前のすべてのビルド作業はキャッシュに保存されるため、Bazel はキャッシュに保存されたアーティファクトを特定して再利用できます。また、変更内容の再構築または再テストのみを行うことができます。正確性をさらに強化するには、サンドボックスを通じて密閉型でビルドとテストを実行するように Bazel を設定し、スキューを最小限に抑え、再現性を最大化します。

アクション グラフ

アクション グラフは、ビルド アーティファクト、それらの関係、Bazel が実行するビルド アクションを表します。このグラフのおかげで、Bazel はファイルのコンテンツの変更と、ビルドやテストコマンドなどのアクションの変更を追跡し、以前に行われたビルド作業を把握できます。また、このグラフを使用すると、コード内の依存関係をトレースすることも簡単です。

開始チュートリアル

Bazel の使用方法については、スタートガイドをご覧ください。または、Bazel のチュートリアルに直接移動してください。