Bazel 註冊資料庫

回報問題 查看來源 夜間 7.2 7.1 7.0 6.5 6.4

Bzlmod 透過 Bazel 要求其資訊來探索依附元件 registries:Bazel 模組的資料庫。目前 Bzlmod 僅支援 索引註冊資料庫 - 本機目錄或靜態 HTTP 伺服器 且在特定格式中

索引註冊資料庫

索引註冊資料庫是本機目錄或含有 模組清單的相關資訊,包括其首頁、維護人員、 每個版本的 MODULE.bazel 檔案,以及如何擷取各個版本的原始碼 版本。值得注意的是,「不需要」提供來源封存。

索引註冊資料庫必須採用以下格式:

  • /bazel_registry.json:含有登錄檔中繼資料的 JSON 檔案 例如:
    • mirrors:指定用於來源封存的鏡像清單。 鏡像網址為鏡像本身, 這個模組的來源網址 (source.json 檔) 會帶有 因此效能相當卓越舉例來說,假設模組的來源網址為 https://foo.com/bar/bazmirrors 包含 ["https://mirror1.com/", "https://example.com/mirror2/"],然後 Bazel 會嘗試依序嘗試網址 https://mirror1.com/foo.com/bar/bazhttps://example.com/mirror2/foo.com/bar/baz,最後是原始檔案 來源網址本身 https://foo.com/bar/baz
    • 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:與 Unix patch--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 存放區:
        • typegit_repository
        • https://bazel.build/rules/lib/repo/git 說明下列欄位:
          • remote
          • commit
          • shallow_since
          • tag
          • init_submodules
          • verbose
          • strip_prefix
      • 可以將類型變更為使用本機路徑,代表 local_repository 存放區,包含以下欄位:
        • typelocal_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/.

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 將其加回。