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
ของ Unixpatch
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