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