Bzlmod, Bazel modüllerinin veritabanları olan Bazel kayıt otoritelerinden bilgilerini isteyerek bağımlılıkları keşfeder. Bzlmod şu anda yalnızca dizin kayıtlarını, yani belirli bir biçimin kullanıldığı yerel dizinler veya statik HTTP sunucularını desteklemektedir.
Dizin kaydı
Dizin kaydı; ana sayfaları, düzenleyicileri, her sürümün MODULE.bazel
dosyası ve her sürümün kaynağının nasıl getirileceği dahil olmak üzere bir modül listesi hakkında bilgiler içeren yerel bir dizin veya statik HTTP sunucusudur. Özellikle kaynak arşivlerin kendisini sunması gerekmez.
Dizin kayıt defteri aşağıdaki biçime uymalıdır:
/bazel_registry.json
: Kayıt defteri için meta verileri içeren bir JSON dosyası. Örneğin:mirrors
: Kaynak arşivleri için kullanılacak yansıtma listesini belirtme. Yansıtılmış URL, yansıtmanın kendi URL'sinin birleştirilmesidir.source.json
dosyası tarafından belirtilen modülün kaynak URL'si ise protokolü temsil eder. Örneğin, bir modülün kaynak URL'sihttps://foo.com/bar/baz
vemirrors
öğesinde["https://mirror1.com/", "https://example.com/mirror2/"]
varsa Bazel'ın deneyeceği URL'ler sırasıylahttps://mirror1.com/foo.com/bar/baz
,https://example.com/mirror2/foo.com/bar/baz
ve son olarak da orijinal kaynak URL'sininhttps://foo.com/bar/baz
olması gerekir.module_base_path
:source.json
dosyasındalocal_repository
türü olan modüllerin temel yolunu belirtme
/modules
: Bu kayıt defterindeki her bir modülün alt dizinini içeren bir dizin/modules/$MODULE
: Bu modülün her sürümü için bir alt dizin ve ayrıca:metadata.json
: Modül hakkında bilgiler içeren ve aşağıdaki alanlarla birlikte bir JSON dosyası:homepage
: Projenin ana sayfasının URL'simaintainers
: JSON nesnelerinin listesi. Her biri, kayıt defterindeki modülün koruyucu bilgilerine karşılık gelir. Bunun projenin yazarlarıyla aynı olmayabileceğini unutmayınversions
: Bu kayıt defterinde yer alacak bu modülün tüm sürümlerinin listesiyanked_versions
: Bu modülün çıkarılmış sürümlerinin haritası. Anahtarlar yank sürümleri olmalı, değerler ise sürümün neden çekildiğine dair açıklamalar olmalı ve ideal olarak daha fazla bilgiye yönlendiren bir bağlantı içermelidir
/modules/$MODULE/$VERSION
: Aşağıdaki dosyaları içeren bir dizin:MODULE.bazel
: Bu modül sürümününMODULE.bazel
dosyasısource.json
: Bu modül sürümünün kaynağının nasıl getirileceğiyle ilgili bilgileri içeren bir JSON dosyası- Varsayılan tür, aşağıdaki alanlarla bir
http_archive
deposunu temsil eden "arşiv" türüdür:url
: Kaynak arşivin URL'siintegrity
: Arşivin Alt Kaynak Bütünlüğü sağlamastrip_prefix
: Kaynak arşivi çıkarırken çıkarılacak bir dizin ön ekipatches
: Çıkarılan arşive uygulanacak yama dosyalarını içeren bir harita. Yama dosyaları/modules/$MODULE/$VERSION/patches
dizininde bulunur. Anahtarlar yama dosyası adları, değerler ise yama dosyalarının bütünlük sağlamasıpatch_strip
: Unixpatch
'in--strip
bağımsız değişkeniyle aynıdır.archive_type
: İndirilen dosyanın arşiv türü (http_archive
üzerindekitype
ile aynıdır). Varsayılan olarak arşiv türü, URL'nin dosya uzantısına göre belirlenir. Dosyanın uzantısı yoksa şunlardan birini açıkça belirtebilirsiniz:"zip"
,"jar"
,"war"
,"aar"
,"tar"
,"tar.gz"
,"tgz"
,"tar.xz"
,"txz"
,"tar.zst"
,"tzst"
,tar.bz2
,"ar"
veya"deb"
.
- Tür, şu alanlarla bir git deposu kullanacak şekilde değiştirilebilir:
type
:git_repository
- https://bazel.build/rules/lib/repo/git adresinde açıklanan şu alanlar:
remote
commit
shallow_since
tag
init_submodules
verbose
strip_prefix
- Tür, şu alanlarla bir
local_repository
deposunu temsil eden yerel bir yol kullanacak şekilde değiştirilebilir:type
:local_path
path
: Deponun yerel yolu. Şu şekilde hesaplanır:path
mutlak bir yolsa olduğu gibi kalırpath
göreli bir yol vemodule_base_path
mutlak bir yolsa<module_base_path>/<path>
olarak çözümlenir- Hem
path
hem demodule_base_path
göreli yolsa<registry_path>/<module_base_path>/<path>
olarak çözümlenir. Kayıt defteri yerel olarak barındırılmalı ve--registry=file://<registry_path>
tarafından kullanılmalıdır. Aksi takdirde, Bazel
- Varsayılan tür, aşağıdaki alanlarla bir
patches/
: Yama dosyalarını içeren isteğe bağlı bir dizindir ve yalnızcasource.json
"arşiv" türünde olduğunda kullanılır
Bazel Merkezi Kayıt Otoritesi
https://bcr.bazel.build/ adresindeki Bazel Central Registry (BCR), GitHub deposu bazelbuild/bazel-central-registry
tarafından desteklenen içeriklere sahip bir dizin kayıt defteridir.
https://registry.bazel.build/ adresindeki web ön ucunu kullanarak dosyanın içeriğine göz atabilirsiniz.
BCR'yi Bazel topluluğu yönetir ve katkıda bulunanlar, çekme istekleri gönderebilir. BCR katkı kurallarını inceleyin.
BCR, normal bir dizin kayıt defterinin biçimini uygulamanın yanı sıra her modül sürümü (/modules/$MODULE/$VERSION/presubmit.yml
) için bir presubmit.yml
dosyası gerektirir. Bu dosya, bu modül sürümünün geçerliliğini kontrol etmek için kullanabileceğiniz birkaç önemli derleme ve test hedefi belirtir. BCR'nin CI ardışık düzenleri, modüller arasında birlikte çalışabilirlik sağlamak için de bunu kullanır.
Kayıtları seçme
Tekrarlanabilir Bazel işareti --registry
, modül isteğinde bulunulacak kayıt otoritelerinin listesini belirtmek için kullanılabilir. Böylece projenizi, üçüncü taraftan veya dahili kayıttaki bağımlılıkları getirecek şekilde ayarlayabilirsiniz. İlk kayıt defterleri daha önceliklidir. Kolaylık sağlaması açısından projenizin .bazelrc
dosyasına --registry
işaretlerinden oluşan bir liste ekleyebilirsiniz.
Kayıt defteriniz GitHub'da barındırılıyorsa (örneğin, bazelbuild/bazel-central-registry
çatalı olarak) --registry
değerinizin raw.githubusercontent.com
altında ham bir GitHub adresine sahip olması gerekir. Örneğin, my-org
çatalının main
dalında --registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/
olarak ayarlanır.
--registry
işaretinin kullanılması, Bazel Central Registry'nin varsayılan olarak kullanılmasını durdurur. Ancak --registry=https://bcr.bazel.build
ekleyerek Bazel Central Registry'yi tekrar ekleyebilirsiniz.