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 객체의 목록으로, 각각 레지스트리에 있는 모듈 유지관리자의 정보에 해당합니다. 프로젝트의 authors와 반드시 동일하지는 않습니다.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
에 '보관처리' 유형이 있을 때만 사용됩니다.
Bazel 중앙 레지스트리
https://bcr.bazel.build/의 Bazel Central Registry (BCR)는 GitHub 저장소 bazelbuild/bazel-central-registry
에서 지원하는 콘텐츠가 포함된 색인 레지스트리입니다.
https://registry.bazel.build/에서 웹 프런트엔드를 사용하여 콘텐츠를 찾아볼 수 있습니다.
Bazel 커뮤니티는 BCR을 유지 관리하며 참여자는 언제든지 가져오기 요청을 제출할 수 있습니다. 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 Central Registry가 사용되지 않지만 --registry=https://bcr.bazel.build
를 추가하여 다시 추가할 수 있습니다.