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. URL được phản chiếu là một chuỗi nối của chính bản sao phản chiếu và URL nguồn của mô-đun được chỉ định bởi tệpsource.json
và không bao gồm giao thức. Ví dụ: nếu URL nguồn của một mô-đun làhttps://foo.com/bar/baz
vàmirrors
chứa["https://mirror1.com/", "https://example.com/mirror2/"]
, thì 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à bản gốc chính URL nguồnhttps://foo.com/bar/baz
.module_base_path
: chỉ định đường dẫn cơ sở cho các mô-đun có Loạilocal_repository
trong tệpsource.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ự ánmaintainers
: 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ự ánversions
: Danh sách tất cả phiên bản của mô-đun này có trong đó sổ đăng ký nàyyanked_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ệpMODULE.bazel
của phiên bản mô-đun nàysource.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ồnintegrity
: 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ồnpatches
: 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ủapatch
trong Unix.archive_type
: Loại lưu trữ của tệp đã tải xuống (Giống nhưtype
trênhttp_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
path
vàmodule_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
- Nếu
- Loại mặc định là "lưu trữ", đại diện cho một kho lưu trữ
patches/
: Thư mục không bắt buộc chứa các tệp bản vá, chỉ được dùng khisource.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
.