Bzlmod는 Bazel 모듈의 데이터베이스인 Bazel 레지스트리에 종속 항목을 요청하여 종속 항목을 검색합니다. 현재 Bzlmod는 특정 형식에 따라 로컬 디렉터리 또는 정적 HTTP 서버인 색인 레지스트리만 지원합니다.
색인 레지스트리
색인 레지스트리는 홈페이지, 유지관리 담당자, 각 버전의 MODULE.bazel
파일, 각 버전의 소스를 가져오는 방법 등 모듈 목록에 대한 정보가 포함된 로컬 디렉터리 또는 정적 HTTP 서버입니다. 특히 소스 보관 파일 자체를 제공할 필요는 없습니다.
색인 레지스트리는 아래 형식을 따라야 합니다.
/bazel_registry.json
: 다음과 같은 레지스트리의 메타데이터가 포함된 JSON 파일입니다.mirrors
: 소스 보관에 사용할 미러 목록 지정module_base_path
:source.json
파일에local_repository
유형이 있는 모듈의 기본 경로를 지정합니다.
/modules
: 이 레지스트리의 각 모듈을 위한 하위 디렉터리가 포함된 디렉터리/modules/$MODULE
: 이 모듈의 각 버전에 관한 하위 디렉터리가 포함된 디렉터리입니다.metadata.json
: 다음 필드가 포함된 모듈 정보가 포함된 JSON 파일입니다.homepage
: 프로젝트 홈페이지의 URLmaintainers
: JSON 객체의 목록이며, 각 객체는 레지스트리의 모듈 유지관리자에 해당합니다. 프로젝트의 author와 반드시 동일하지는 않습니다.versions
: 이 레지스트리에서 찾을 수 있는 이 모듈의 모든 버전 목록입니다.yanked_versions
: 이 모듈의 양성 버전 지도입니다. 키는 버케팅할 버전이어야 하며 값은 버전을 가져오는 이유에 관한 설명이어야 합니다. 이상적으로는 추가 정보 링크를 포함해야 합니다.
/modules/$MODULE/$VERSION
: 다음 파일이 포함된 디렉터리입니다.MODULE.bazel
: 이 모듈 버전의MODULE.bazel
파일입니다.source.json
: 이 모듈 버전의 소스를 가져오는 방법에 관한 정보가 포함된 JSON 파일입니다.- 기본 유형은
http_archive
저장소를 나타내는 '아카이브'이며 다음 필드가 포함됩니다.url
: 소스 보관 파일의 URLintegrity
: 보관 파일의 하위 리소스 무결성 체크섬strip_prefix
: 소스 보관 파일 추출 시 삭제할 디렉터리 접두사patches
: 추출된 보관 파일에 적용할 패치 파일이 포함된 지도입니다. 패치 파일은/modules/$MODULE/$VERSION/patches
디렉터리 아래에 있습니다. 키는 패치 파일 이름이고 값은 패치 파일의 무결성 체크섬입니다.patch_strip
: Unixpatch
의--strip
인수와 동일합니다.archive_type
: 다운로드한 파일의 보관 파일 형식입니다 (http_archive
의type
와 동일). 기본적으로 보관 파일 유형은 URL의 파일 확장자에 따라 결정됩니다. 파일에 확장자가 없으면"zip"
,"jar"
,"war"
,"aar"
,"tar"
,"tar.gz"
,"tgz"
,"tar.xz"
,"txz"
,"tar.zst"
,"tzst"
,tar.bz2
,"ar"
또는"deb"
중 하나를 명시적으로 지정할 수 있습니다.
- 유형을 변경하여
local_repository
저장소를 나타내는 로컬 경로를 다음 필드와 함께 사용할 수 있습니다.type
:local_path
path
: 저장소의 로컬 경로로, 다음과 같이 계산됩니다.path
가 절대 경로이면 그대로 유지됩니다.path
가 상대 경로이고module_base_path
가 절대 경로이면<module_base_path>/<path>
로 확인됩니다.path
와module_base_path
가 모두 상대 경로이면<registry_path>/<module_base_path>/<path>
로 확인됩니다. 레지스트리는 로컬에서 호스팅하고--registry=file://<registry_path>
에서 사용해야 합니다. 그렇지 않으면 Bazel에서
- 기본 유형은
patches/
: 패치 파일이 포함된 선택적 디렉터리이며source.json
에 'archive' 유형이 있는 경우에만 사용됩니다.
Bazel 중앙 레지스트리
https://bcr.bazel.build/의 Bazel 중앙 레지스트리 (BCR)는 GitHub 저장소 bazelbuild/bazel-central-registry
에서 지원하는 콘텐츠가 포함된 색인 레지스트리입니다.
https://registry.bazel.build/에서 웹 프런트엔드를 사용하여 해당 콘텐츠를 탐색할 수 있습니다.
Bazel 커뮤니티가 BCR을 유지하며, 참여자는 pull 요청을 제출할 수 있습니다. BCR 참여 가이드라인을 참고하세요.
BCR에는 일반 색인 레지스트리 형식 외에도 각 모듈 버전(/modules/$MODULE/$VERSION/presubmit.yml
)의 presubmit.yml
파일이 필요합니다. 이 파일은 모듈 버전의 유효성을 확인하는 데 사용할 수 있는 몇 가지 필수 빌드 및 테스트 대상을 지정합니다. BCR의 CI 파이프라인은 또한 이를 사용하여 모듈 간의 상호 운용성을 보장합니다.
레지스트리 선택
반복 가능한 Bazel 플래그 --registry
는 모듈을 요청할 레지스트리 목록을 지정하는 데 사용할 수 있으므로 타사 또는 내부 레지스트리에서 종속 항목을 가져오도록 프로젝트를 설정할 수 있습니다. 이전 레지스트리가 우선 적용됩니다. 편의를 위해 프로젝트의 .bazelrc
파일에 --registry
플래그 목록을 포함할 수 있습니다.
레지스트리가 GitHub에서 호스팅되는 경우 (예: bazelbuild/bazel-central-registry
의 포크로) --registry
값에 raw.githubusercontent.com
아래의 원시 GitHub 주소가 필요합니다. 예를 들어 my-org
포크의 main
브랜치에서 --registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/
를 설정합니다.
--registry
플래그를 사용하면 기본적으로 Bazel 중앙 레지스트리가 사용되지 않지만 --registry=https://bcr.bazel.build
을 추가하여 다시 추가할 수 있습니다.