Bzlmod จะค้นหาการขึ้นต่อกันโดยการขอข้อมูลจากรีจิสทรีของ Bazel ซึ่งเป็นฐานข้อมูลของโมดูล Bazel ปัจจุบัน Bzlmod รองรับเฉพาะรีจิสทรีดัชนี ซึ่งเป็นไดเรกทอรีในเครื่องหรือเซิร์ฟเวอร์ HTTP แบบคงที่ ที่ใช้รูปแบบที่เฉพาะเจาะจง
รีจิสทรีดัชนี
รีจิสทรีดัชนีคือไดเรกทอรีในเครื่องหรือเซิร์ฟเวอร์ HTTP แบบคงที่ที่มีข้อมูลเกี่ยวกับรายการโมดูล ซึ่งรวมถึงหน้าแรก ผู้ดูแล MODULE.bazel ของแต่ละเวอร์ชัน และวิธีดึงข้อมูลแหล่งที่มาของแต่ละเวอร์ชัน โปรดทราบว่าไม่จำเป็นต้องแสดงที่เก็บถาวรของแหล่งที่มา
รีจิสทรีดัชนีต้องเป็นไปตามรูปแบบด้านล่าง
- /bazel_registry.json: ไฟล์ JSON ที่มีข้อมูลเมตาสำหรับรีจิสทรี เช่น- mirrors: ระบุรายการมิเรอร์ที่จะใช้สำหรับที่เก็บถาวรของแหล่งที่มา URL ที่มิเรอร์คือการต่อกันของมิเรอร์เองและ URL แหล่งที่มาของโมดูลที่ระบุโดยไฟล์- source.jsonโดยไม่มี โปรโตคอล ตัวอย่างเช่น หาก URL แหล่งที่มาของโมดูลคือ- https://foo.com/bar/bazและ- mirrorsมี- ["https://mirror1.com/", "https://example.com/mirror2/"]URL ที่ Bazel จะลองตามลำดับคือ- https://mirror1.com/foo.com/bar/baz,- https://example.com/mirror2/foo.com/bar/bazและสุดท้ายคือ URL แหล่งที่มาเดิม- https://foo.com/bar/baz
- 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 ที่มีข้อมูลเกี่ยวกับวิธีดึงข้อมูล แหล่งที่มาของโมดูลเวอร์ชันนี้- ประเภทเริ่มต้นคือ "archive" ซึ่งแสดงถึงที่เก็บ http_archiveโดยมีฟิลด์ต่อไปนี้- url: URL ของที่เก็บถาวรของแหล่งที่มา
- integrity: ผลรวมตรวจสอบ Subresource Integrity ของที่เก็บถาวร
- strip_prefix: คำนำหน้าไดเรกทอรีที่จะนำออกเมื่อแตกไฟล์ ที่เก็บต้นฉบับ
- patches: แผนที่ที่มีไฟล์แพตช์ที่จะใช้กับ ที่เก็บถาวรที่แยกออกมา ไฟล์แพตช์จะอยู่ในไดเรกทอรี- /modules/$MODULE/$VERSION/patchesคีย์คือ ชื่อไฟล์แพตช์ และค่าคือผลรวมตรวจสอบความสมบูรณ์ของ ไฟล์แพตช์
- patch_strip: เหมือนกับอาร์กิวเมนต์- --stripของ- patchใน Unix
- 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เป็น เส้นทางแบบสัมบูรณ์ ระบบจะเปลี่ยนเป็น<module_base_path>/<path>
- หากทั้ง pathและmodule_base_pathเป็นเส้นทางแบบสัมพัทธ์ ระบบจะ เปลี่ยนเป็น<registry_path>/<module_base_path>/<path>รีจิสทรีต้องโฮสต์ในเครื่องและใช้โดย--registry=file://<registry_path>ไม่เช่นนั้น Bazel จะ แสดงข้อผิดพลาด
 
- หาก 
 
 
- ประเภทเริ่มต้นคือ "archive" ซึ่งแสดงถึงที่เก็บ 
- patches/: ไดเรกทอรีที่ไม่บังคับซึ่งมีไฟล์แพตช์ ใช้เฉพาะเมื่อ- source.jsonมีประเภท "archive"
 
รีจิสทรีกลางของ Bazel
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) ไฟล์นี้จะระบุเป้าหมายการสร้างและการทดสอบที่จำเป็น 2-3 รายการ ซึ่งคุณสามารถใช้เพื่อตรวจสอบความถูกต้องของโมดูลเวอร์ชันนี้ได้ นอกจากนี้ ไปป์ไลน์ CI ของ BCR ยังใช้สิ่งนี้เพื่อให้มั่นใจถึงการทำงานร่วมกัน
ระหว่างโมดูล
การเลือกรีจิสทรี
คุณใช้แฟล็ก --registry ของ Bazel ที่ทำซ้ำได้เพื่อระบุรายการรีจิสทรีที่จะขอโมดูลจากได้ เพื่อให้คุณตั้งค่าโปรเจ็กต์เพื่อดึงข้อมูลการอ้างอิงจากรีจิสทรีของบุคคลที่สามหรือรีจิสทรีภายในได้ รีจิสทรีที่อยู่ก่อนหน้าจะมี
ลำดับความสำคัญสูงกว่า คุณสามารถใส่รายการ--registryแฟล็กในไฟล์
.bazelrcของโปรเจ็กต์เพื่อความสะดวก
หากรีจิสทรีโฮสต์อยู่ใน GitHub (เช่น เป็น Fork ของ
bazelbuild/bazel-central-registry) ค่า --registry จะต้องมีที่อยู่ GitHub แบบดิบ
ภายใต้ raw.githubusercontent.com เช่น ในmain
สาขาของmy-org Fork คุณจะต้องตั้งค่า
--registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/
การใช้แฟล็ก --registry จะหยุดไม่ให้ Bazel Central Registry ถูกใช้โดยค่าเริ่มต้น แต่คุณจะเพิ่มกลับได้โดยเพิ่ม --registry=https://bcr.bazel.build