รีจิสทรี Bazel

วันที่ รายงานปัญหา ดูแหล่งที่มา ตอนกลางคืน · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Bzlmod ค้นพบทรัพยากร Dependency โดยขอข้อมูลจาก Bazel registries: ฐานข้อมูลของโมดูล Bazel ขณะนี้ Bzlmod รองรับเฉพาะ รีจิสทรีดัชนี — ไดเรกทอรีในเครื่องหรือเซิร์ฟเวอร์ HTTP แบบคงที่ ตามรูปแบบที่เฉพาะเจาะจง

รีจิสทรีดัชนี

รีจิสทรีดัชนีคือไดเรกทอรีภายในหรือเซิร์ฟเวอร์ HTTP แบบคงที่ที่มี เกี่ยวกับรายการโมดูล ซึ่งรวมถึงหน้าแรก ผู้ให้บริการ โมดูล MODULE.bazel ไฟล์ของแต่ละเวอร์ชัน และวิธีดึงข้อมูลแหล่งที่มาของแต่ละเวอร์ชัน เวอร์ชัน ที่สำคัญคือ ไม่จำเป็นต้องแสดงที่เก็บซอร์สด้วยตัวเอง

รีจิสทรีดัชนีต้องเป็นไปตามรูปแบบด้านล่าง

  • /bazel_registry.json: ไฟล์ JSON ที่มีข้อมูลเมตาสำหรับรีจิสทรี อย่างเช่น:
    • mirrors: ระบุรายการมิเรอร์ที่จะใช้สำหรับที่เก็บถาวรของแหล่งที่มา
    • module_base_path: การระบุเส้นทางฐานสำหรับโมดูลที่มี ประเภท local_repository ในไฟล์ source.json
  • /modules: ไดเรกทอรีที่มีไดเรกทอรีย่อยสำหรับแต่ละโมดูลใน รีจิสทรี
  • /modules/$MODULE: ไดเรกทอรีที่มีไดเรกทอรีย่อยสำหรับแต่ละเวอร์ชัน ของโมดูลนี้ รวมถึง
    • metadata.json: ไฟล์ JSON ที่มีข้อมูลเกี่ยวกับโมดูล ด้วยฟิลด์ต่อไปนี้
      • homepage: URL หน้าแรกของโปรเจ็กต์
      • maintainers: รายการออบเจ็กต์ JSON โดยแต่ละรายการจะสอดคล้องกับ ข้อมูลผู้ดูแลโมดูลในรีจิสทรี โปรดทราบว่าอีเมลนี้ไม่จำเป็นต้องเหมือนกับผู้เขียน โปรเจ็กต์
      • versions: รายการเวอร์ชันทั้งหมดของโมดูลนี้ที่สามารถดูได้ใน รีจิสทรีนี้
      • yanked_versions: แผนที่ของแยก ของโมดูลนี้ คีย์ ควรเป็นเวอร์ชันที่จะแยก และค่าควรเป็นคำอธิบายของ ทำไมเวอร์ชันจึงถูกแยกออก ซึ่งโดยหลักแล้วจะมีลิงก์ไปยัง ข้อมูล
  • /modules/$MODULE/$VERSION: ไดเรกทอรีที่มีไฟล์ต่อไปนี้
    • MODULE.bazel: ไฟล์ MODULE.bazel ของโมดูลเวอร์ชันนี้
    • source.json: ไฟล์ JSON ที่มีข้อมูลเกี่ยวกับวิธีดึงข้อมูล แหล่งที่มาของเวอร์ชันโมดูลนี้
      • ประเภทเริ่มต้นคือ "เก็บถาวร" ซึ่งแสดงถึงที่เก็บ http_archive ด้วยฟิลด์ต่อไปนี้
        • url: URL ของที่เก็บถาวรต้นทาง
        • integrity: ทรัพยากรย่อย ความซื่อสัตย์ checksum ของที่เก็บถาวร
        • strip_prefix: คำนำหน้าไดเรกทอรีที่จะตัดออกเมื่อดึงข้อมูล ที่เก็บซอร์ส
        • patches: แผนที่ที่มีไฟล์แพตช์เพื่อใช้กับ ที่เก็บถาวรที่แยกออกมา ไฟล์แพตช์อยู่ภายใต้ ไดเรกทอรี /modules/$MODULE/$VERSION/patches กุญแจสำคัญคือ ชื่อไฟล์แพตช์ และค่าต่างๆ คือการตรวจสอบความสมบูรณ์ของ ไฟล์แพตช์
        • patch_strip: เหมือนกับอาร์กิวเมนต์ --strip ของ Unix patch
        • archive_type: ประเภทที่เก็บถาวรของไฟล์ที่ดาวน์โหลด (เหมือนกับ type ใน http_archive) โดยค่าเริ่มต้น ระบบจะกำหนดประเภทที่เก็บถาวรจากนามสกุลไฟล์ของ 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 เป็น Absolute Path เปลี่ยนเป็น <module_base_path>/<path>
          • หาก path และ module_base_path เป็นเส้นทางที่เกี่ยวข้องทั้งคู่ แก้ไขเป็น <registry_path>/<module_base_path>/<path> รีจิสทรีต้องโฮสต์ในเครื่องและใช้โดย --registry=file://<registry_path> มิฉะนั้น Bazel จะ แสดงข้อผิดพลาด
    • patches/: ไดเรกทอรีที่ไม่บังคับซึ่งมีไฟล์แพตช์ ใช้เฉพาะเมื่อ source.json มี "ที่เก็บถาวร" ประเภท

สำนักทะเบียน Bazel Central

Bazel Central Registry (BCR) ที่ https://bcr.bazel.build/ คือดัชนี รีจิสทรีที่มีเนื้อหาซึ่งได้รับการสนับสนุนโดยที่เก็บ GitHub bazelbuild/bazel-central-registry คุณสามารถเรียกดูเนื้อหาโดยใช้ฟรอนท์เอนด์ของเว็บได้ที่ https://registry.bazel.build/.

ชุมชน Bazel เป็นผู้ดูแล BCR อยู่ และผู้ร่วมให้ข้อมูลก็ส่งคำตอบเข้ามาได้ ดึงคำขอ ดูการมีส่วนร่วมของ BCR หลักเกณฑ์

นอกจากการทำตามรูปแบบของรีจิสทรีดัชนีปกติแล้ว BCR ยังต้องมี ไฟล์ presubmit.yml สำหรับแต่ละเวอร์ชันโมดูล (/modules/$MODULE/$VERSION/presubmit.yml) ไฟล์นี้ระบุข้อมูลที่จำเป็นบางส่วน สร้างและทดสอบเป้าหมายที่ใช้ตรวจสอบความถูกต้องของโมดูลนี้ได้ เวอร์ชัน ไปป์ไลน์ CI ของ BCR ยังใช้ไปป์ไลน์ CI เพื่อรับประกันความสามารถในการทำงานร่วมกัน ระหว่างโมดูลได้

การเลือกรีจิสทรี

แฟล็ก Bazel ที่ทำซ้ำได้ --registry สามารถใช้เพื่อระบุรายการของ รีจิสทรีที่จะขอโมดูลเพื่อให้คุณตั้งค่าโปรเจ็กต์เพื่อดึงข้อมูลได้ ทรัพยากร Dependency จากรีจิสทรีหรือบุคคลที่สาม รีจิสทรีก่อนหน้านี้ใช้เวลา ลำดับความสำคัญ เพื่อความสะดวก คุณสามารถใส่รายการ Flag --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