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

Báo cáo vấn đề Xem nguồn Hằng đêm · 7.3 · 7.2 · 7.1 · 7 · 6,5

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

Sổ đăng ký chỉ mục

Sổ đăng ký chỉ mục là một thư mục cục bộ hoặc một máy chủ HTTP tĩnh chứa thông tin về danh sách các mô-đun — bao gồm trang chủ, dịch vụ bảo 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 tệp . Đáng chú ý là nó không cần tự phân phát các bản lưu trữ nguồn.

Sổ đăng ký chỉ mục phải tuân theo định dạng bên dưới:

  • /bazel_registry.json: Tệp JSON chứa siêu dữ liệu cho sổ đăng ký như:
    • mirrors: chỉ định danh sách bản sao để sử dụng cho bản lưu trữ nguồn
    • 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 mô-đun này sổ đăng ký
  • /modules/$MODULE: Thư mục chứa một thư mục con cho mỗi phiên bản của học phần 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 trang chủ của 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 về người duy trì mô-đun trong sổ đăng ký. Xin lưu ý rằng bài viết này không nhất thiết giống như các 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 đó sổ đăng ký này
      • yanked_versions: Bản đồ được kéo phiên bản của mô-đun này. Khoá phải là các phiên bản để kéo và các giá trị phải là mô tả của lý do khiến phiên bản bị trích dẫn, lý tưởng là chứa một đường liên kết đến của bạn
  • /modules/$MODULE/$VERSION: 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à "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: Tài nguyên phụ Liêm chính giá trị tổng kiểm của kho lưu trữ
        • strip_prefix: Tiền tố thư mục cần loại bỏ khi trích xuất bản lưu trữ nguồn
        • patches: Một bản đồ chứa các tệp bản vá sẽ áp dụng cho tệp lưu trữ đã trích xuất. Các tệp bản vá nằm trong Thư mục /modules/$MODULE/$VERSION/patches. Chìa khoá này là tên tệp bản vá và các giá trị là tổng kiểm tra tính toàn vẹn của tệp bản vá
        • patch_strip: Giống như đối số --strip của patch trong Unix.
        • archive_type: Loại lưu trữ của tệp đã tải xuống (Giống như type trên http_archive). Theo mặc định, loại lưu trữ được xác định từ đuôi tệp của URL. Nếu tệp có không có tiện ích, bạn có thể chỉ định rõ một trong các giá trị 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 dữ liệu để 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ộ, biểu thị 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ẽ không thay đổi
          • Nếu path là một đường dẫn tương đối và module_base_path là một đường dẫn đường dẫn tuyệt đối, đường dẫn này phân giải thành <module_base_path>/<path>
          • Nếu pathmodule_base_path đều là đường dẫn tương đối, thì phân giải thành <registry_path>/<module_base_path>/<path>. Sổ đăng ký phải được lưu trữ cục bộ và được sử dụng bởi --registry=file://<registry_path>. 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ó lệnh "lưu trữ" lượt chuyển đổi

Hệ thống đăng ký trung tâm Bazel

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

Cộng đồng Bazel duy trì BCR và những người đóng góp đều có thể gửi biểu mẫu yêu cầu lấy dữ liệu. Xem thông tin đóng góp về BCR nguyên tắc.

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 từng phiên bản mô-đun (/modules/$MODULE/$VERSION/presubmit.yml). Tệp này chỉ định một vài thông tin quan trọng các mục tiêu tạo và kiểm thử mà bạn có thể sử dụng để kiểm tra tính hợp lệ của mô-đun này . Các quy trình CI của BCR cũng sử dụng công nghệ 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ể dùng cờ Bazel lặp lại --registry để chỉ định danh sách đăng ký để yêu cầu mô-đun, nhờ đó, bạn có thể thiết lập dự án để tìm nạp phần phụ thuộc của bên thứ ba hoặc hệ thống đăng ký nội bộ. Các tổ chức đăng ký trước đây mất quyền ưu tiên. Để thuận tiện, bạn có thể đặt danh sách các cờ --registry trong 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 một dữ liệu thô Địa chỉ GitHub thuộc raw.githubusercontent.com. Ví dụ: trên main nhánh của ngã ba 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 Bazel Central Registry mặc định, nhưng bạn có thể thêm lại bằng cách thêm --registry=https://bcr.bazel.build.