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 を使用すると、ビルドするだけでなく、Terraform で テストを行い、ビルドをクエリする コード内の依存関係をトレースできます
Bazel ビルドプロセス
ビルドまたはテストを実行すると、Bazel は次のことを行います。
ターゲットに関連する
BUILD
ファイルを読み込みます。最終的なビルドが出力されるまで、入力に対するビルド アクションを実行 生成されます。
以前のビルド作業はすべてキャッシュに保存されているため、Bazel では、キャッシュに保存されたビルド作業を識別して再利用できます。 変更箇所のみを再構築または再テストしますさらに Bazel を設定してビルドとテストを実行することで、 サンドボックス化によって密閉型でスキューを最小化 再現性を最大化する。
アクション グラフ
アクション グラフは、ビルド アーティファクト、それらの関係、ビルド アーティファクト間の関係、 Bazel が実行するビルド アクションを確認します。このグラフのおかげで 変更を追跡する アクションの変更(ビルドコマンドやテストコマンドなど)に加え、 過去に行われたビルド作業を確認できますこのグラフを使用すると、コード内の依存関係を簡単にトレースすることもできます。
チュートリアルのスタートガイド
Bazel の使用を開始するには、スタートガイドをご覧ください。または、次の Bazel チュートリアルに直接ジャンプしてください。