Bzlmod 透過 Bazel 要求其資訊來探索依附元件 registries:Bazel 模組的資料庫。目前 Bzlmod 僅支援 索引註冊資料庫 - 本機目錄或靜態 HTTP 伺服器 且在特定格式中
索引註冊資料庫
索引註冊資料庫是本機目錄或含有
模組清單的相關資訊,包括其首頁、維護人員、
每個版本的 MODULE.bazel
檔案,以及如何擷取各個版本的原始碼
版本。值得注意的是,「不需要」提供來源封存。
索引註冊資料庫必須採用以下格式:
/bazel_registry.json
:含有登錄檔中繼資料的 JSON 檔案 例如:mirrors
:指定用於來源封存的鏡像清單module_base_path
:指定含有source.json
檔案中的local_repository
類型
/modules
:包含子目錄中每個模組的子目錄 註冊資料庫/modules/$MODULE
:包含每個版本的子目錄的目錄 其他詳細資訊metadata.json
:包含模組相關資訊的 JSON 檔案。 包含下列欄位:homepage
:專案的首頁網址maintainers
:JSON 物件清單,每個物件都對應至 登錄檔中模組維護人員的資訊。 請注意,此指示不一定等於文件的作者 專案versions
:可顯示此模組的所有版本 這個登錄檔yanked_versions
:「yanked」的地圖 個版本。重要 應為 yank 的版本,而值應該是 版本為何為「女用」形,最好附上更多連結 資訊
/modules/$MODULE/$VERSION
:包含下列檔案的目錄:MODULE.bazel
:此模組版本的MODULE.bazel
檔案source.json
:JSON 檔案,內含如何擷取 這個模組版本的原始碼- 預設類型為「Archive」,代表
http_archive
存放區。 包含下列欄位:url
:來源封存網址integrity
:子資源 誠信 封存檔總和檢查碼strip_prefix
:擷取 來源封存patches
:包含要套用至 擷取的封存檔。修補程式檔案位於/modules/$MODULE/$VERSION/patches
目錄內。關鍵在於 更新修補程式檔案名稱,而其值為 修補型檔案patch_strip
:與 Unixpatch
的--strip
引數相同。archive_type
:下載檔案的封存類型 (與http_archive
上的type
相同)。 根據預設,封存類型取決於網址的副檔名。如果檔案 如果是沒有副檔名,您可以明確指定下列其中一項:"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/.
Bazel 社群負責維護 BCR,歡迎您提交參與人員 提取要求查看 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
將其加回。