Bazel の概要

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 を使用してプロジェクトをビルドまたはテストするには、通常、次の手順を行います。

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

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

  3. BUILD ファイルを作成します。このファイルは、ビルド内容とビルド方法を Bazel に指示します。

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

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

    ビルドルールは、コンパイラ、リンカーなど、Bazel が使用するビルドツールとその構成を指定します。Bazel には、サポートされているプラットフォームでサポートされている言語で最も一般的なアーティファクト タイプをカバーするビルドルールがいくつか用意されています。

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

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

Bazel ビルドプロセス

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

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

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

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

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

アクション グラフ

アクション グラフは、ビルド アーティファクト、アーティファクト間の関係、Bazel が実行するビルド アクションを表します。このグラフにより、Bazel はファイル コンテンツの変更とアクション(ビルドコマンドやテストコマンドなど)の変更を追跡し、これまでに行われたビルド作業を確認できます。また、コード内の依存関係をトレースすることも簡単です。

スタートガイド チュートリアル

Bazel の使用を開始するには、スタートガイドをご覧いただくか、Bazel のチュートリアルに直接移動してください。