Bzlmod ने Baज़ेन से अपनी जानकारी मांगकर, डिपेंडेंसी का पता लगाया रजिस्ट्रियां: बेज़ल मॉड्यूल के डेटाबेस. फ़िलहाल, Bzlmod सिर्फ़ काम करता है इंडेक्स रजिस्ट्री — लोकल डायरेक्ट्री या स्टैटिक एचटीटीपी सर्वर का पालन करें.
इंडेक्स रजिस्ट्री
इंडेक्स रजिस्ट्री, एक लोकल डायरेक्ट्री या स्टैटिक एचटीटीपी सर्वर होता है, जिसमें
मॉड्यूल की सूची के बारे में जानकारी — इसमें उनके होम पेज, मेंटेनर,
हर वर्शन की MODULE.bazel
फ़ाइल और हर वर्शन के सोर्स को फ़ेच करने का तरीका
वर्शन है. खास तौर पर, इसे सोर्स संग्रह को दिखाने की ज़रूरत नहीं होती.
इंडेक्स रजिस्ट्री को इस फ़ॉर्मैट का पालन करना होगा:
/bazel_registry.json
: रजिस्ट्री के मेटाडेटा वाली JSON फ़ाइल पसंद:mirrors
: सोर्स संग्रहों के लिए इस्तेमाल करने के लिए मिरर की सूची तय करना. मिरर किया गया यूआरएल खुद ही मिरर को जोड़ने की प्रोसेस है और मॉड्यूल का स्रोत URL इसकीsource.json
फ़ाइल से तय होता है Sans प्रोटोकॉल का इस्तेमाल करना चाहिए. उदाहरण के लिए, अगर किसी मॉड्यूल का सोर्स यूआरएलhttps://foo.com/bar/baz
औरmirrors
में यह शामिल है["https://mirror1.com/", "https://example.com/mirror2/"]
और इसके बाद बेज़लhttps://mirror1.com/foo.com/bar/baz
के क्रम में यूआरएल की कोशिश करेगा,https://example.com/mirror2/foo.com/bar/baz
और आखिर में ओरिजनल स्रोत यूआरएल खुदhttps://foo.com/bar/baz
.module_base_path
: मॉड्यूल के लिए बुनियादी पाथ तय करनाsource.json
फ़ाइल मेंlocal_repository
टाइप
/modules
: एक डायरेक्ट्री, जिसमें हर मॉड्यूल की सबडायरेक्ट्री होती है रजिस्ट्री/modules/$MODULE
: एक डायरेक्ट्री, जिसमें हर वर्शन की सबडायरेक्ट्री होती हैं आपको ये बदलाव दिखेंगे:metadata.json
: एक JSON फ़ाइल जिसमें मॉड्यूल के बारे में जानकारी होती है, इसमें ये फ़ील्ड शामिल होंगे:homepage
: प्रोजेक्ट के होम पेज का यूआरएलmaintainers
: JSON ऑब्जेक्ट की एक सूची, जो कि हर ऑब्जेक्ट से जुड़ी है रजिस्ट्री में मॉड्यूल के मेंटेनर की जानकारी. ध्यान दें कि यह आवश्यक रूप से लेखकों के प्रोजेक्टversions
: यहां मिलने वाले इस मॉड्यूल के सभी वर्शन की सूची इस रजिस्ट्रीyanked_versions
: यांक हुआ का मैप वर्शन दिए गए हैं. कुंजियां यैंक करने के लिए वर्शन होने चाहिए और मान वर्शन को यैंक किया गया है, जबकि आम तौर पर इसमें एक अन्य जानकारी
/modules/$MODULE/$VERSION
: नीचे दी गई फ़ाइलों वाली एक डायरेक्ट्री:MODULE.bazel
: इस मॉड्यूल वर्शन कीMODULE.bazel
फ़ाइलsource.json
: एक JSON फ़ाइल जिसमें, इस मॉड्यूल वर्शन का सोर्स- डिफ़ॉल्ट टाइप "संग्रह" होता है, जो
http_archive
रेपो को दिखाता है. इसमें ये फ़ील्ड शामिल होंगे:url
: सोर्स संग्रह का यूआरएलintegrity
: सबरिसॉर्स इंटेग्रिटी संग्रह का चेकसमstrip_prefix
: एक्सट्रैक्ट करते समय स्ट्रिप करने के लिए डायरेक्ट्री प्रीफ़िक्स सोर्स संग्रहpatches
: एक मैप जिसमें पैच फ़ाइलें मौजूद हैं, जिन्हें एक्सट्रैक्ट किया गया संग्रह. पैच फ़ाइलें इसके नीचे मौजूद होती हैं:/modules/$MODULE/$VERSION/patches
डायरेक्ट्री. इसके लिए, ज़रूरी है कि पैच फ़ाइल नाम और मान हैं, इंटेग्रिटी चेकसम पैच फ़ाइलेंpatch_strip
: Unixpatch
के--strip
आर्ग्युमेंट की तरह ही.archive_type
: डाउनलोड की गई फ़ाइल का संग्रह टाइप (http_archive
पर मौजूदtype
की तरह). डिफ़ॉल्ट रूप से, संग्रह का टाइप, यूआरएल के फ़ाइल एक्सटेंशन से तय होता है. अगर फ़ाइल में कोई एक्सटेंशन नहीं, तो आप इनमें से किसी एक को साफ़ तौर पर बता सकते हैं:"zip"
,"jar"
,"war"
,"aar"
,"tar"
,"tar.gz"
,"tgz"
,"tar.xz"
,"txz"
,"tar.zst"
,"tzst"
,tar.bz2
,"ar"
या"deb"
.
- इन फ़ील्ड के साथ एक git रिपॉज़िटरी का इस्तेमाल करने के लिए टाइप बदला जा सकता है:
type
:git_repository
- नीचे दिए गए फ़ील्ड, जिनके बारे में https://bazu.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>
. अगर ऐसा नहीं किया जाता है, तो बेज़ल ये काम कर पाएंगे गड़बड़ी करो
- अगर
- डिफ़ॉल्ट टाइप "संग्रह" होता है, जो
patches/
: पैच फ़ाइलों वाली एक वैकल्पिक डायरेक्ट्री, जिसका इस्तेमाल सिर्फ़ तब किया जाता है, जबsource.json
के पास "संग्रह" है टाइप
बेज़ल सेंट्रल रजिस्ट्री
https://bcr.bazel.build/ पर मौजूद Basel Central Registry (BCR) एक इंडेक्स है
GitHub के रेपो की मदद से काम करने वाली रजिस्ट्री
bazelbuild/bazel-central-registry
.
आप वेब फ़्रंटएंड का इस्तेमाल करके, यहां दिए गए कॉन्टेंट को ब्राउज़ कर सकते हैं:
https://registry.bazel.build/.
बेज़ल समुदाय, बीसीआर को बनाए रखता है और योगदान देने वाले लोग, सबमिट कर सकते हैं पुल करने के अनुरोध शामिल हैं. बीसीआर योगदान देखें दिशा-निर्देशों के मुताबिक होना चाहिए.
सामान्य इंडेक्स रजिस्ट्री के फ़ॉर्मैट का पालन करने के अलावा, बीसीआर को
हर मॉड्यूल वर्शन के लिए एक presubmit.yml
फ़ाइल
(/modules/$MODULE/$VERSION/presubmit.yml
). यह फ़ाइल कुछ ज़रूरी एलिमेंट के बारे में बताती है
ऐसे टारगेट बनाएं और टेस्ट करें जिनका इस्तेमाल आप इस मॉड्यूल की वैधता की जांच करने के लिए कर सकें
वर्शन है. बीसीआर की सीआई पाइपलाइन भी इसका इस्तेमाल इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करना) पक्का करने के लिए करती हैं
मॉड्यूल के बीच में.
रजिस्ट्री चुनी जा रही हैं
दोहराए जा सकने वाले बेज़ल फ़्लैग --registry
का इस्तेमाल,
मॉड्यूल का अनुरोध करने के लिए रजिस्ट्री, ताकि आप फ़ेच करने के लिए अपने प्रोजेक्ट को सेट अप कर सकें
ये आपके डोमेन, तीसरे पक्ष या इंटरनल रजिस्ट्री से डिपेंडेंसी होती हैं. पहले की रजिस्ट्री लेने पर
प्राथमिकता. सुविधा के लिए, आप इसमें --registry
फ़्लैग की सूची
आपके प्रोजेक्ट की .bazelrc
फ़ाइल.
अगर आपकी रजिस्ट्री को GitHub पर होस्ट किया गया है, तो
bazelbuild/bazel-central-registry
) तो आपकी --registry
वैल्यू को रॉ वैल्यू की ज़रूरत है
raw.githubusercontent.com
में GitHub पता. उदाहरण के लिए, main
पर
my-org
फ़ोर्क की शाखा हो, तो आपको
--registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/
.
--registry
फ़्लैग का इस्तेमाल करने से Basel Central Registry का इस्तेमाल करना बंद हो जाता है
डिफ़ॉल्ट तौर पर, लेकिन --registry=https://bcr.bazel.build
को जोड़कर इसे फिर से जोड़ा जा सकता है.