Bazel を使用する理由

問題を報告する ソースを表示 夜間 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Bazel は高速正確拡張可能 複数の機能をサポートする統合テストを備えたビルドツール 言語リポジトリ プラットフォームを、業界をリードするエコシステムで利用できます。

Bazel は高速

Bazel は、各ビルドコマンドに必要な入力ファイルを正確に把握しているため、 再実行することによって、不要な作業を回避できます。 おすすめします。 ビルドコマンドの実行には、可能な限り多くの並列処理が 同じコンピュータまたはリモートビルド ノードに作成します。ビルドの構造が 何千ものビルドコマンドやテストコマンドを同時に実行できます。

これは、メモリ内、ディスク上、およびオンプレミス上の複数のキャッシュ レイヤによってサポートされます。 リモート ビルド ファームを使用します。Google では定期的にキャッシュ ヒット率を達成し、 表示されます

Bazel は正常です

Bazel では、バイナリがご自身のものからのみビルドされます ソースコードです。Bazel アクションは個々のサンドボックスと Bazel トラックで実行されます すべての入力ファイルが自動的に再実行されるため、 使用できます。これによりバイナリが最新の状態に保たれるので、 同じソースコードは常に同じバイナリになる、ビット 少しずつ見ていきます。

make clean の無限呼び出しとファントム バグを追いかけましょう ソースコードで解決されていますが

Bazel は拡張可能

Bazel を最大限に活用するには、独自のルールとマクロを 幅広いプロジェクトの特定のニーズに合わせて Bazel をカスタマイズできます。

Bazel ルールは Starlark で記述されています。 社内プログラミング言語で記述されています。Starlark の特長 ほとんどのデベロッパーがルール作成機能を利用できるようにすると同時に、 エコシステム全体で使用できるようになります

統合されたテスト

Bazel の統合テストランナー リモート実行を使用して、再実行が必要なテストのみを認識して実行する 並列して実行できます。リモコンを使用して薄片を早期に検出する 短時間でテストを数千回実行できます。

Bazel は、テスト結果を中央管理チームにアップロードする機能を提供します。 これにより、テストの結果を効率よく伝えることができます。たとえば、 または個々のデベロッパーが行えます。

多言語対応

Bazel は、C++、Java、 Kotlin、Python、Go、Rust です。複数のバイナリ(例: バックエンド、ウェブ UI、モバイルアプリなど)を同じ Bazel 呼び出しで実行できます。 1 つの言語の慣用的なビルドツールに限定されます。

マルチリポジトリのサポート

Bazel では、複数の場所からソースコードを収集できます。 依存関係をベンダリングする必要がない場合は(ただし、ベンダリングできます)、代わりに Bazel をソースコードまたはビルド済みのアーティファクト( リポジトリや Maven Central など)をデプロイし、残りは Google が処理します。

マルチプラットフォーム サポート

Bazel は、Linux、Linux、Windows 8.1 など、複数のプラットフォーム用のプロジェクトを同時にビルドできます。 macOS、Windows、Android です。また、 クロスコンパイル機能を使用して、特定の目的のために 別のプラットフォームでビルドを実行します。

広範なエコシステム

業界リーダーは Bazel を愛用しており、大規模な Bazel を利用し、これに貢献している開発者のコミュニティです。ツールやサービスを探す およびドキュメント(コンサルティング サービスおよび SaaS サービスを含む) Bazel を使用できます。Google Cloud のプログラミング言語のサポートなどの拡張機能を オープンソース ソフトウェア リポジトリから入手できます。