Bzlmod จะค้นหาข้อมูลพึ่งพาโดยขอข้อมูลจาก registries ของ 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
: Checksum Subresource Integrity ของไฟล์ที่เก็บถาวร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
เป็นเส้นทางแบบสัมบูรณ์ ระบบจะเปลี่ยนเส้นทางเป็น<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 (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 ยังใช้ข้อมูลนี้เพื่อตรวจสอบความสามารถในการทำงานร่วมกันระหว่างโมดูลด้วย
การเลือกรีจิสทรี
คุณสามารถใช้ Flag --registry
ของ Bazel ซ้ำเพื่อระบุรายการที่เก็บถาวรที่จะขอโมดูลได้ เพื่อให้คุณตั้งค่าโปรเจ็กต์ให้ดึงข้อมูล 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/
การใช้ Flag --registry
จะหยุดไม่ให้ระบบใช้รีจิสทรีส่วนกลางของ Bazel โดยค่าเริ่มต้น แต่คุณสามารถเพิ่มกลับเข้าไปได้โดยการใส่ --registry=https://bcr.bazel.build