Bazel レジストリ

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

bzlmod が Bazel から依存関係の情報をリクエストして依存関係を検出する registries: Bazel モジュールのデータベース。現在、Bzlmod は インデックス レジストリ - ローカル ディレクトリまたは静的 HTTP サーバー トレーニングされます。

インデックス レジストリ

インデックス レジストリは、ローカル ディレクトリまたは静的 HTTP サーバーで、 モジュールのリストに関する情報が表示されます。これには、モジュールのホームページ、メンテナンス担当者、 各バージョンの MODULE.bazel ファイルと、各バージョンのソースの取得方法 できます。特に、ソース アーカイブ自体を提供する必要はありません

インデックス レジストリは、次の形式に従う必要があります。

  • /bazel_registry.json: レジストリのメタデータを含む JSON ファイル 例:
    • mirrors: ソース アーカイブに使用するミラーのリストを指定します。 ミラーリング対象の URL は、ミラー自体を連結したもので、 source.json ファイルで指定されたモジュールのソース URL。 構成されます。たとえば、モジュールのソース URL が https://foo.com/bar/bazmirrors が次を含む: ["https://mirror1.com/", "https://example.com/mirror2/"] の場合は Bazel が試行する URL は https://mirror1.com/foo.com/bar/baz です。 https://example.com/mirror2/foo.com/bar/baz、最後に元の ソース URL 自体は https://foo.com/bar/baz です。
    • module_base_path: モジュールのベースパスを指定します。 source.json ファイルの local_repository
  • /modules: このプロジェクト内の各モジュールのサブディレクトリを含むディレクトリ レジストリ
  • /modules/$MODULE: 各バージョンのサブディレクトリを含むディレクトリ 次の内容が含まれています。
    • metadata.json: モジュールに関する情報を含む JSON ファイル。 次のフィールドがあります
      • homepage: プロジェクトのホームページの URL
      • maintainers: JSON オブジェクトのリスト。それぞれが対応する レジストリ内のモジュールのメンテナンス担当者の情報。 これらは、必ずしも書籍の作成者とは プロジェクト
      • versions: このモジュールのすべてのバージョンのリスト。 このレジストリ
      • yanked_versions: 地図を引っ張った このモジュールの 2 つのバージョンをご覧ください。キー はヤンクするバージョンで、値は バージョンが読み取られた理由(理想的には、 情報
  • /modules/$MODULE/$VERSION: 次のファイルを含むディレクトリ。
    • MODULE.bazel: このモジュール バージョンの MODULE.bazel ファイル
    • source.json: 取得方法に関する情報を含む JSON ファイル。 このモジュール バージョンのソース
      • デフォルトのタイプは「archive」で、http_archive リポジトリを表します。 次のフィールドがあります
        • url: ソース アーカイブの URL
        • integrity: サブリソース 完全性 アーカイブのチェックサム
        • strip_prefix: .tfvars ファイルを抽出する際に削除するディレクトリ接頭辞 ソース アーカイブ
        • patches: 適用するパッチファイルを含むマップ。 抽出されたアーカイブですパッチファイルは /modules/$MODULE/$VERSION/patches ディレクトリ。キーは、 各パッチファイルの名前、値は実際のパッチの パッチファイル
        • patch_strip: Unix patch--strip 引数と同じです。
        • archive_type: ダウンロードされたファイルのアーカイブ タイプ(http_archivetype と同じ)。 デフォルトでは、アーカイブの種類は URL のファイル拡張子によって決まります。ファイルに 拡張子がない場合は、"zip""jar""war""aar" のいずれかを明示的に指定できます。 "tar""tar.gz""tgz""tar.xz""txz""tar.zst""tzst"tar.bz2"ar""deb"
      • このタイプは、次のフィールドで Git リポジトリを使用するように変更できます。
        • type: git_repository
        • 次のフィールドについては、https://bazel.build/rules/lib/repo/git をご覧ください。
          • remote
          • commit
          • shallow_since
          • tag
          • init_submodules
          • verbose
          • strip_prefix
      • この型は、ローカルパスを使用するように変更できます。ローカルパスは、 次のフィールドを含む local_repository リポジトリ:
        • type: local_path
        • path: リポジトリのローカルパス。次のように計算されます。
          • path が絶対パスの場合は、変更されない
          • path が相対パスで、module_base_path が相対パスの場合は、 絶対パスの場合、<module_base_path>/<path> に解決されます。
          • pathmodule_base_path の両方が相対パスの場合は、 <registry_path>/<module_base_path>/<path> に解決されます。 レジストリはローカルにホストされ、 --registry=file://<registry_path>。それ以外の場合、Bazel は エラーをスローする
    • patches/: パッチファイルを含むオプションのディレクトリ。次の場合にのみ使用されます。 source.json には「アーカイブ」があります種類

Bazel Central Registry

https://bcr.bazel.build/ にある Bazel Central Registry(BCR)はインデックスです GitHub リポジトリを基盤とするコンテンツを含む bazelbuild/bazel-central-registry。 その内容は、次のウェブ フロントエンドを使用してブラウジングできます: https://registry.bazel.build/.

BCR の管理は Bazel コミュニティで行っています。コントリビューターの皆様もぜひ pull リクエスト。BCR の貢献度を確認 ガイドラインをご覧ください。

BCR では、通常のインデックス レジストリの形式に従うだけでなく、 モジュール バージョンごとの presubmit.yml ファイル (/modules/$MODULE/$VERSION/presubmit.yml)。このファイルでは、 このモジュールの有効性をチェックするために使用できるビルド ターゲットとテスト ターゲット できます。BCR の CI パイプラインもこれを使用して、相互運用性を確保します。 学びます。

レジストリの選択

繰り返し可能な Bazel フラグ --registry を使用して、 モジュールのリクエスト元としてプロジェクトを設定。 サードパーティまたは内部レジストリから分離します。以前のレジストリは 優先されます。便宜上、--registry フラグのリストを プロジェクトの .bazelrc ファイル。

レジストリが GitHub でホストされている場合(たとえば、 bazelbuild/bazel-central-registry など)である場合、--registry 値には未加工の raw.githubusercontent.com の下にある GitHub アドレス。たとえば、main my-org フォークのブランチの場合、 --registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/

--registry フラグを使用すると、Bazel Central Registry が使用されなくなります。 デフォルトですが、--registry=https://bcr.bazel.build を追加することで再度追加できます。