bzlmod が Bazel から依存関係の情報をリクエストして依存関係を検出する registries: Bazel モジュールのデータベース。現在、Bzlmod は インデックス レジストリ - ローカル ディレクトリまたは静的 HTTP サーバー トレーニングされます。
インデックス レジストリ
インデックス レジストリは、ローカル ディレクトリまたは静的 HTTP サーバーで、
モジュールのリストに関する情報が表示されます。これには、モジュールのホームページ、メンテナンス担当者、
各バージョンの MODULE.bazel
ファイルと、各バージョンのソースの取得方法
できます。特に、ソース アーカイブ自体を提供する必要はありません。
インデックス レジストリは、次の形式に従う必要があります。
/bazel_registry.json
: レジストリのメタデータを含む JSON ファイル 例:mirrors
: ソース アーカイブに使用するミラーのリストを指定します。 ミラーリング対象の URL は、ミラー自体を連結したもので、source.json
ファイルで指定されたモジュールのソース URL。 構成されます。たとえば、モジュールのソース URL がhttps://foo.com/bar/baz
、mirrors
が次を含む:["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
: プロジェクトのホームページの URLmaintainers
: JSON オブジェクトのリスト。それぞれが対応する レジストリ内のモジュールのメンテナンス担当者の情報。 これらは、必ずしも書籍の作成者とは プロジェクトversions
: このモジュールのすべてのバージョンのリスト。 このレジストリyanked_versions
: 地図を引っ張った このモジュールの 2 つのバージョンをご覧ください。キー はヤンクするバージョンで、値は バージョンが読み取られた理由(理想的には、 情報
/modules/$MODULE/$VERSION
: 次のファイルを含むディレクトリ。MODULE.bazel
: このモジュール バージョンのMODULE.bazel
ファイルsource.json
: 取得方法に関する情報を含む JSON ファイル。 このモジュール バージョンのソース- デフォルトのタイプは「archive」で、
http_archive
リポジトリを表します。 次のフィールドがありますurl
: ソース アーカイブの URLintegrity
: サブリソース 完全性 アーカイブのチェックサムstrip_prefix
: .tfvars ファイルを抽出する際に削除するディレクトリ接頭辞 ソース アーカイブpatches
: 適用するパッチファイルを含むマップ。 抽出されたアーカイブですパッチファイルは/modules/$MODULE/$VERSION/patches
ディレクトリ。キーは、 各パッチファイルの名前、値は実際のパッチの パッチファイルpatch_strip
: Unixpatch
の--strip
引数と同じです。archive_type
: ダウンロードされたファイルのアーカイブ タイプ(http_archive
のtype
と同じ)。 デフォルトでは、アーカイブの種類は 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>
に解決されます。path
とmodule_base_path
の両方が相対パスの場合は、<registry_path>/<module_base_path>/<path>
に解決されます。 レジストリはローカルにホストされ、--registry=file://<registry_path>
。それ以外の場合、Bazel は エラーをスローする
- デフォルトのタイプは「archive」で、
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
を追加することで再度追加できます。