Bazel 注册表

报告问题 查看来源 每晚 · 7.2。 · 7.1敬上 · 7.0 · 6.5 条 · 6.4

Bzlmod 通过从 Bazel 请求依赖项信息来发现依赖项 registries:Bazel 模块的数据库。目前,Bzlmod 仅支持 索引注册表 - 本地目录或静态 HTTP 服务器 特定格式

索引注册表

索引注册表是本地目录或包含 模块列表(包括其主页、维护人员、 每个版本的 MODULE.bazel 文件,以及如何提取每个版本的源代码 版本。值得注意的是,它无需自行提供源归档。

索引注册表必须遵循以下格式:

  • /bazel_registry.json:包含注册表元数据的 JSON 文件 例如: <ph type="x-smartling-placeholder">
      </ph>
    • mirrors:指定用于源归档的镜像列表
    • module_base_path:指定模块的基本路径,其中 source.json 文件中的 local_repository 类型
  • /modules:包含此目录中每个模块的子目录的目录 注册数据库
  • /modules/$MODULE:包含每个版本的子目录的目录 以及以下内容: <ph type="x-smartling-placeholder">
      </ph>
    • metadata.json:包含模块相关信息的 JSON 文件。 包含以下字段: <ph type="x-smartling-placeholder">
        </ph>
      • homepage:项目首页的网址
      • maintainers:JSON 对象列表,其中每个对象都对应 注册表中的模块维护人员的信息。 请注意,这不一定与 项目
      • versions:包含此模块的所有版本的列表 此注册表
      • yanked_versions拉伸的地图 版本。密钥 应是可供激动人心的版本,值应是 版本被抓取的原因,最好包含指向更多内容的链接 信息
  • /modules/$MODULE/$VERSION:包含以下文件的目录: <ph type="x-smartling-placeholder">
      </ph>
    • MODULE.bazel:此模块版本的 MODULE.bazel 文件
    • source.json:一个 JSON 文件,其中包含有关如何提取 此模块版本的源代码 <ph type="x-smartling-placeholder">
        </ph>
      • 默认类型为“archive”,表示一个 http_archive 代码库。 包含以下字段: <ph type="x-smartling-placeholder">
          </ph>
        • 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"
      • 可以将类型更改为使用本地路径,该路径表示 local_repository 代码库,其中包含以下字段: <ph type="x-smartling-placeholder">
          </ph>
        • typelocal_path
        • path:代码库的本地路径,计算公式如下: <ph type="x-smartling-placeholder">
            </ph>
          • 如果 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 中央注册表

https://bcr.bazel.build/ 处的 Bazel 中央注册表 (BCR) 是一个索引 包含 GitHub 代码库支持的内容的注册表 bazelbuild/bazel-central-registry。 您可以使用 Web 前端浏览其内容,网址为: https://registry.bazel.build/.

BCR 由 Bazel 社区维护,欢迎贡献者提交 拉取请求请参阅 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 中央注册表 但您可以通过添加 --registry=https://bcr.bazel.build 将其重新添加回来。