Bazel 레지스트리

문제 신고 소스 보기 1박 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Bzlmod가 Bazel에 정보를 요청하여 종속 항목 발견 registries: Bazel 모듈의 데이터베이스입니다. 현재 Bzlmod는 색인 레지스트리 — 로컬 디렉터리 또는 정적 HTTP 서버 특정 형식을 따릅니다.

색인 레지스트리

색인 레지스트리는 다음을 포함하는 로컬 디렉터리 또는 정적 HTTP 서버입니다. 모듈 목록에 대한 정보(홈페이지, 유지관리 담당자, 각 버전의 MODULE.bazel 파일 및 각 버전의 소스를 가져오는 방법 있습니다. 특히 소스 보관 파일 자체를 제공할 필요는 없습니다.

색인 레지스트리는 다음 형식을 따라야 합니다.

  • /bazel_registry.json: 레지스트리의 메타데이터가 포함된 JSON 파일입니다. 예를 들면 다음과 같습니다.
    • mirrors: 소스 보관 파일에 사용할 미러 목록을 지정합니다. 미러링된 URL은 미러 자체와 다음 소스 URL이 포함되어 있지 않은 source.json 파일에서 지정된 모듈의 소스 URL입니다. 사용할 수 있습니다 예를 들어 모듈의 소스 URL이 https://foo.com/bar/bazmirrors에 다음이 포함됨 ["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: 프로젝트 홈페이지의 URL
      • maintainers: JSON 객체의 목록으로, 다음에 해당합니다. 레지스트리에 있는 모듈 유지관리자의 정보 이 정보는 다음의 작성자와 프로젝트
      • versions: 찾을 수 있는 이 모듈의 모든 버전 목록입니다. 이 레지스트리
      • yanked_versions: 양크된 지도 버전을 참조하세요. 핵심 잡아야 할 버전이어야 하며 값은 왜 이런 문제가 발생할 수 있나요? 정보
  • /modules/$MODULE/$VERSION: 다음 파일이 포함된 디렉터리입니다.
    • MODULE.bazel: 이 모듈 버전의 MODULE.bazel 파일입니다.
    • source.json: JSON 파일에서 이 모듈 버전의 소스
      • 기본 유형은 'archive'이며 http_archive 저장소를 나타냅니다. 다음 필드로 대체합니다.
        • url: 소스 보관 파일의 URL
        • integrity: 하위 리소스 청렴 아카이브의 체크섬
        • strip_prefix: 파일을 추출할 때 삭제할 디렉터리 접두어입니다. 소스 보관 파일
        • patches: 압축 해제했습니다. 패치 파일은 /modules/$MODULE/$VERSION/patches 디렉터리에 있습니다. 키는 패치 파일 이름이 포함되고, 값은 패치 파일
        • patch_strip: Unix patch--strip 인수와 동일합니다.
        • archive_type: 다운로드한 파일의 보관 파일 유형입니다 (http_archivetype와 동일). 기본적으로 보관 파일 유형은 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>로 확인됩니다.
          • pathmodule_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 기여를 확인하세요. 가이드라인을 참고하세요.

일반 색인 레지스트리의 형식을 따르는 것 외에도 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를 추가하여 다시 추가할 수 있습니다.