Bzlmod가 Bazel에 정보를 요청하여 종속 항목 발견 registries: Bazel 모듈의 데이터베이스입니다. 현재 Bzlmod는 색인 레지스트리 — 로컬 디렉터리 또는 정적 HTTP 서버 특정 형식을 따릅니다.
색인 레지스트리
색인 레지스트리는 다음을 포함하는 로컬 디렉터리 또는 정적 HTTP 서버입니다.
모듈 목록에 대한 정보(홈페이지, 유지관리 담당자,
각 버전의 MODULE.bazel
파일 및 각 버전의 소스를 가져오는 방법
있습니다. 특히 소스 보관 파일 자체를 제공할 필요는 없습니다.
색인 레지스트리는 다음 형식을 따라야 합니다.
/bazel_registry.json
: 레지스트리의 메타데이터가 포함된 JSON 파일입니다. 예를 들면 다음과 같습니다.mirrors
: 소스 보관 파일에 사용할 미러 목록을 지정합니다. 미러링된 URL은 미러 자체와 다음 소스 URL이 포함되어 있지 않은source.json
파일에서 지정된 모듈의 소스 URL입니다. 사용할 수 있습니다 예를 들어 모듈의 소스 URL이https://foo.com/bar/baz
및mirrors
에 다음이 포함됨["https://mirror1.com/", "https://example.com/mirror2/"]
를 누른 다음 Bazel이 시도할 URL은https://mirror1.com/foo.com/bar/baz
입니다.https://example.com/mirror2/foo.com/bar/baz
그리고 마지막으로 원본 소스 URL 자체https://foo.com/bar/baz
.module_base_path
: 다음이 있는 모듈의 기본 경로 지정source.json
파일의local_repository
유형
/modules
: 이 모듈의 각 모듈의 하위 디렉터리가 포함된 디렉터리입니다. 레지스트리/modules/$MODULE
: 각 버전의 하위 디렉터리가 포함된 디렉터리입니다. 다음과 같은 내용을 다룹니다.metadata.json
: 모듈에 관한 정보가 포함된 JSON 파일입니다. 다음 필드로 대체합니다.homepage
: 프로젝트 홈페이지의 URLmaintainers
: JSON 객체의 목록으로, 다음에 해당합니다. 레지스트리에 있는 모듈 유지관리자의 정보 이 정보는 다음의 작성자와 프로젝트versions
: 찾을 수 있는 이 모듈의 모든 버전 목록입니다. 이 레지스트리yanked_versions
: 양크된 지도 버전을 참조하세요. 핵심 잡아야 할 버전이어야 하며 값은 왜 이런 문제가 발생할 수 있나요? 정보
/modules/$MODULE/$VERSION
: 다음 파일이 포함된 디렉터리입니다.MODULE.bazel
: 이 모듈 버전의MODULE.bazel
파일입니다.source.json
: JSON 파일에서 이 모듈 버전의 소스- 기본 유형은 'archive'이며
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"
.
- 다음 필드와 함께 git 저장소를 사용하도록 유형을 변경할 수 있습니다.
type
:git_repository
- https://bazel.build/rules/lib/repo/git에 설명된 다음 필드는 다음과 같습니다.
remote
commit
shallow_since
tag
init_submodules
verbose
strip_prefix
- 유형을 나타내는 로컬 경로를 사용하도록 변경할 수 있습니다.
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이 오류 발생
- 기본 유형은 'archive'이며
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 기여를 확인하세요. 가이드라인을 참고하세요.
일반 색인 레지스트리의 형식을 따르는 것 외에도 BCR은
각 모듈 버전의 presubmit.yml
파일
(/modules/$MODULE/$VERSION/presubmit.yml
). 이 파일은
이 모듈의 유효성을 검사하는 데 사용할 수 있는 대상을 빌드하고 테스트합니다.
있습니다. BCR의 CI 파이프라인도 이를 사용하여
다르기 때문입니다
레지스트리 선택
반복 가능한 Bazel 플래그 --registry
를 사용하여
모듈을 요청할 수 있으므로 프로젝트를 설정하여
종속 항목을 삭제할 수 있습니다 이전 레지스트리는
우선 적용됩니다 편의를 위해 --registry
플래그 목록을
프로젝트의 .bazelrc
파일
레지스트리가 GitHub에서 호스팅되는 경우 (예:
bazelbuild/bazel-central-registry
) --registry
값에 원시 값이 필요합니다.
GitHub 주소(raw.githubusercontent.com
) 예를 들면 main
에서
my-org
포크의 브랜치는
--registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/
입니다.
--registry
플래그를 사용하면 다음에서 Bazel Central Registry를 사용하지 않습니다.
기본값이지만 --registry=https://bcr.bazel.build
를 추가하여 다시 추가할 수 있습니다.