Tổ chức quản lý tên miền

Báo cáo vấn đề Xem nguồn Nightly · 8.0 . 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Bzlmod khám phá các phần phụ thuộc bằng cách yêu cầu thông tin của các phần phụ thuộc đó từ nhật ký Bazel: cơ sở dữ liệu của các mô-đun Bazel. Hiện tại, Bzlmod chỉ hỗ trợ nhật ký chỉ mục – các thư mục cục bộ hoặc máy chủ HTTP tĩnh theo một định dạng cụ thể.

Chỉ mục đăng ký

Cấu phần đăng ký chỉ mục là một thư mục cục bộ hoặc máy chủ HTTP tĩnh chứa thông tin về danh sách các mô-đun, bao gồm cả trang chủ, người duy trì, tệp MODULE.bazel của mỗi phiên bản và cách tìm nạp nguồn của mỗi phiên bản. Đáng chú ý là tệp này không cần tự phân phát bản lưu trữ nguồn.

Cấu hình đăng ký chỉ mục phải tuân theo định dạng dưới đây:

  • /bazel_registry.json: Tệp JSON chứa siêu dữ liệu cho sổ đăng ký như:
    • mirrors: chỉ định danh sách các bản sao để sử dụng cho bản lưu trữ nguồn. URL được phản chiếu là một chuỗi kết hợp của chính bản phản chiếu và URL nguồn của mô-đun do tệp source.json chỉ định mà không có giao thức. Ví dụ: nếu URL nguồn của một mô-đun là https://foo.com/bar/bazmirrors chứa ["https://mirror1.com/", "https://example.com/mirror2/"], thì các URL mà Bazel sẽ thử theo thứ tự là https://mirror1.com/foo.com/bar/baz, https://example.com/mirror2/foo.com/bar/baz và cuối cùng là chính URL nguồn ban đầu https://foo.com/bar/baz.
    • module_base_path: chỉ định đường dẫn cơ sở cho các mô-đun có loại local_repository trong tệp source.json
  • /modules: Thư mục chứa một thư mục con cho mỗi mô-đun trong sổ đăng ký này
  • /modules/$MODULE: Thư mục chứa một thư mục con cho mỗi phiên bản của mô-đun này, cũng như:
    • metadata.json: Tệp JSON chứa thông tin về mô-đun, với các trường sau:
      • homepage: URL của trang chủ dự án
      • maintainers: Danh sách các đối tượng JSON, mỗi đối tượng tương ứng với thông tin của một người duy trì mô-đun trong sổ đăng ký. Xin lưu ý rằng thông tin này không nhất thiết phải giống với tác giả của dự án
      • versions: Danh sách tất cả phiên bản của mô-đun này có trong đăng ký này
      • yanked_versions: Bản đồ các phiên bản đã bị xoá của mô-đun này. Khoá phải là các phiên bản cần rút và giá trị phải là nội dung mô tả lý do phiên bản đó bị rút, tốt nhất là chứa đường liên kết đến thông tin khác
  • /modules/$MODULE/$VERSION: Một thư mục chứa các tệp sau:
    • MODULE.bazel: Tệp MODULE.bazel của phiên bản mô-đun này
    • source.json: Tệp JSON chứa thông tin về cách tìm nạp nguồn của phiên bản mô-đun này
      • Loại mặc định là "archive" (tài nguyên lưu trữ), đại diện cho một kho lưu trữ http_archive, với các trường sau:
        • url: URL của bản lưu trữ nguồn
        • integrity: Checksum Tính toàn vẹn của tài nguyên phụ của tệp lưu trữ
        • strip_prefix: Tiền tố thư mục cần xoá khi trích xuất tệp lưu trữ nguồn
        • patches: Một bản đồ chứa các tệp bản vá để áp dụng cho bản lưu trữ đã trích xuất. Các tệp bản vá nằm trong thư mục /modules/$MODULE/$VERSION/patches. Khoá là tên tệp bản vá và giá trị là tổng kiểm tính toàn vẹn của tệp bản vá
        • patch_strip: Tương tự như đối số --strip của Unix patch.
        • archive_type: Loại tệp lưu trữ của tệp đã tải xuống (Tương tự như type trên http_archive). Theo mặc định, loại tệp lưu trữ được xác định từ đuôi tệp của URL. Nếu tệp không có đuôi, bạn có thể chỉ định rõ ràng một trong những đuôi sau: "zip", "jar", "war", "aar", "tar", "tar.gz", "tgz", "tar.xz", "txz", "tar.zst", "tzst", tar.bz2, "ar" hoặc "deb".
      • Bạn có thể thay đổi loại này để sử dụng kho lưu trữ git, với các trường sau:
        • type: git_repository
        • Các trường sau đây như mô tả tại https://bazel.build/rules/lib/repo/git:
          • remote
          • commit
          • shallow_since
          • tag
          • init_submodules
          • verbose
          • strip_prefix
      • Bạn có thể thay đổi loại này để sử dụng đường dẫn cục bộ, đại diện cho một kho lưu trữ local_repository, với các trường sau:
        • type: local_path
        • path: Đường dẫn cục bộ đến kho lưu trữ, được tính như sau:
          • Nếu path là một đường dẫn tuyệt đối, thì đường dẫn này sẽ giữ nguyên
          • Nếu path là đường dẫn tương đối và module_base_path là đường dẫn tuyệt đối, thì đường dẫn này sẽ phân giải thành <module_base_path>/<path>
          • Nếu pathmodule_base_path đều là đường dẫn tương đối, thì đường dẫn này sẽ phân giải thành <registry_path>/<module_base_path>/<path>. Cơ sở đăng ký phải được lưu trữ cục bộ và do --registry=file://<registry_path> sử dụng. Nếu không, Bazel sẽ gửi một lỗi
    • patches/: Thư mục không bắt buộc chứa các tệp bản vá, chỉ được dùng khi source.json có loại "lưu trữ"

Cấu phần đăng ký trung tâm Bazel

Cơ sở đăng ký trung tâm Bazel (BCR) tại https://bcr.bazel.build/ là một cơ sở đăng ký chỉ mục có nội dung được kho lưu trữ GitHub bazelbuild/bazel-central-registry hỗ trợ. Bạn có thể duyệt qua nội dung của kho lưu trữ này bằng giao diện người dùng web tại https://registry.bazel.build/.

Cộng đồng Bazel duy trì BCR và hoan nghênh những người đóng góp gửi yêu cầu kéo. Xem nguyên tắc đóng góp nội dung cho BCR.

Ngoài việc tuân theo định dạng của sổ đăng ký chỉ mục thông thường, BCR yêu cầu một tệp presubmit.yml cho mỗi phiên bản mô-đun (/modules/$MODULE/$VERSION/presubmit.yml). Tệp này chỉ định một số mục tiêu bản dựng và kiểm thử thiết yếu mà bạn có thể sử dụng để kiểm tra tính hợp lệ của phiên bản mô-đun này. Quy trình CI của BCR cũng sử dụng điều này để đảm bảo khả năng tương tác giữa các mô-đun.

Chọn sổ đăng ký

Bạn có thể sử dụng cờ Bazel lặp lại --registry để chỉ định danh sách đăng ký yêu cầu các mô-đun, nhờ đó, bạn có thể thiết lập dự án để tìm nạp các phần phụ thuộc từ một bên thứ ba hoặc sổ đăng ký nội bộ. Các sổ đăng ký trước đó sẽ được ưu tiên. Để thuận tiện, bạn có thể đặt danh sách cờ --registry vào tệp .bazelrc của dự án.

Nếu sổ đăng ký của bạn được lưu trữ trên GitHub (ví dụ: dưới dạng một nhánh của bazelbuild/bazel-central-registry), thì giá trị --registry của bạn cần có địa chỉ GitHub thô trong raw.githubusercontent.com. Ví dụ: trên nhánh main của nhánh my-org, bạn sẽ đặt --registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/.

Việc sử dụng cờ --registry sẽ ngăn việc sử dụng Cấu phần đăng ký trung tâm Bazel theo mặc định, nhưng bạn có thể thêm lại cờ này bằng cách thêm --registry=https://bcr.bazel.build.