Bazel, bağımlılıkların bilgilerini Bazel kayıtlarından (Bazel modüllerinin veritabanları) isteyerek bağımlılıkları keşfeder. Bazel yalnızca bir kayıt türünü (dizin kayıtları) destekler. Bunlar, belirli bir biçime uyan yerel dizinler veya statik HTTP sunucularıdır.
Dizin kaydı
Dizin kayıt defteri, bir modül listesiyle ilgili bilgileri (ana sayfaları, bakımcıları, her sürümün MODULE.bazel
dosyası ve her sürümün kaynağının nasıl getirileceği dahil) içeren yerel bir dizin veya statik bir HTTP sunucusudur. Özellikle, kaynak arşivlerin kendisini sunması gerekmez.
Dizin kaydı şu biçimde olmalıdır:
/bazel_registry.json
: Kayıt defterinin meta verilerini içeren isteğe bağlı bir JSON dosyası./modules
: Bu kayıt defterindeki her modül için bir alt dizin içeren bir dizin/modules/$MODULE
:$MODULE
adlı modülün her sürümü için bir alt dizin ve bu modülün meta verilerini içerenmetadata.json
dosyası içeren bir dizin./modules/$MODULE/$VERSION
: Aşağıdaki dosyaları içeren bir dizin:MODULE.bazel
: Bu modül sürümününMODULE.bazel
dosyası. Bunun, Bazel'in harici bağımlılık çözümlemesi sırasında okunanMODULE.bazel
dosyası olduğunu, kaynak arşivdeki dosya olmadığını (kayıt dışı bir geçersiz kılma olmadığı sürece) unutmayın. Ayrıca, sürümün versiyonunu ayarlamak için bu dosyayı kullanmanın ve kaynak arşivMODULE.bazel
dosyasında bu işlemi yapmaktan kaçınmanın en iyi yöntem olduğunu unutmayın. Modül sürümü oluşturma hakkında daha fazla bilgi edinmek için SSS bölümüne bakın.source.json
: Bu modül sürümünün kaynağının nasıl getirileceğiyle ilgili bilgileri içeren bir JSON dosyasıpatches/
: Yama dosyalarını içeren isteğe bağlı bir dizin. Yalnızcasource.json
"archive" türüne sahip olduğunda kullanılır.overlay/
: Yer paylaşımı dosyalarını içeren isteğe bağlı bir dizin. Yalnızcasource.json
"archive" türüne sahip olduğunda kullanılır.
bazel_registry.json
bazel_registry.json
, kayıt defterinin tamamı için geçerli olan meta verileri belirten isteğe bağlı bir dosyadır. Aşağıdaki alanları içerebilir:
mirrors
: Kaynak arşivler için kullanılacak yansıtma listesini belirten bir dizi dize.- Yansıtılan URL, yansıtmanın kendisi ile protokol hariç
source.json
dosyası tarafından belirtilen modülün kaynak URL'sinin birleştirilmesidir. Örneğin, bir modülün kaynak URL'sihttps://foo.com/bar/baz
ise vemirrors
,["https://mirror1.com/", "https://example.com/mirror2/"]
içeriyorsa Bazel'in sırayla deneyeceği URL'lerhttps://mirror1.com/foo.com/bar/baz
,https://example.com/mirror2/foo.com/bar/baz
ve son olarak orijinal kaynak URL'nin kendisihttps://foo.com/bar/baz
olur.
- Yansıtılan URL, yansıtmanın kendisi ile protokol hariç
module_base_path
:source.json
dosyasındalocal_path
türündeki modüllerin temel yolunu belirten bir dize
metadata.json
metadata.json
, aşağıdaki alanları içeren ve modül hakkında bilgi barındıran isteğe bağlı bir JSON dosyasıdır:
versions
: Her biri bu kayıt defterinde bulunan modülün bir sürümünü belirten bir dizi dize. Bu dizi, modül dizininin alt öğeleriyle eşleşmelidir.yanked_versions
: Bu modülün yanked sürümlerini belirten bir JSON nesnesi. Anahtarlar, kaldırılacak sürümler olmalı, değerler ise sürümün neden kaldırıldığına dair açıklamalar olmalıdır. İdeal olarak, daha fazla bilgiye bağlantı içermelidir.
BCR'nin metadata.json
dosyasında daha fazla bilgi gerektirdiğini unutmayın.
source.json
source.json
, bir modülün belirli bir sürümünün nasıl getirileceği hakkında bilgi içeren zorunlu bir JSON dosyasıdır. Bu dosyanın şeması, varsayılan olarak archive
olan type
alanına bağlıdır.
type
archive
(varsayılan) ise bu modül sürümü birhttp_archive
depo kuralıyla desteklenir. Belirli bir URL'den arşiv indirilip içeriği çıkarılarak getirilir. Aşağıdaki alanları destekler:url
: Kaynak arşivin URL'si olan bir dizemirror_urls
: Kaynak arşivin yansıtma URL'lerinin bulunduğu bir dize listesi. URL'ler,url
sonrasında yedek olarak sırayla denenir.integrity
: Arşivin Subresource Integrity denetim toplamı olan bir dizestrip_prefix
: Kaynak arşivi çıkarılırken kaldırılacak dizin öneki dizesioverlay
: Çıkarılan arşivin üzerine katman oluşturmak için yer paylaşımı dosyalarını içeren bir JSON nesnesi. Yama dosyaları/modules/$MODULE/$VERSION/overlay
dizininde bulunur. Anahtarlar, yer paylaşımı dosyalarının adları, değerler ise yer paylaşımı dosyalarının bütünlük sağlama değeridir. Yer paylaşımları, yama dosyalarından önce uygulanır.patches
: Çıkarılan arşive uygulanacak yama dosyalarını içeren bir JSON nesnesi. Yama dosyaları/modules/$MODULE/$VERSION/patches
dizininde bulunur. Anahtarlar yama dosyası adları, değerler ise yama dosyalarının bütünlük sağlama toplamıdır. Yamalar, yer paylaşımı dosyalarından sonra vepatches
içinde göründükleri sırayla uygulanır.patch_strip
: Bir sayı; Unixpatch
öğesinin--strip
bağımsız değişkeniyle aynıdır.archive_type
: İndirilen dosyanın arşiv türünü belirten bir dize (http_archive
üzerindekitype
ile aynıdır).
type
git_repository
ise bu modül sürümü birgit_repository
depo kuralı tarafından desteklenir ve Git deposu klonlanarak getirilir.- Aşağıdaki alanlar desteklenir ve doğrudan temel
git_repository
depo kuralına yönlendirilir:remote
,commit
,shallow_since
,tag
,init_submodules
,verbose
vestrip_prefix
.
- Aşağıdaki alanlar desteklenir ve doğrudan temel
type
local_path
ise bu modül sürümü birlocal_repository
depo kuralıyla desteklenir; yerel diskteki bir dizine sembolik olarak bağlanır. Aşağıdaki alanı destekler:path
: Deponun yerel yolu, aşağıdaki gibi hesaplanır:path
mutlak bir yol ise olduğu gibi kalır.path
göreli bir yol vemodule_base_path
mutlak bir yol ise<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 hata verir.
Bazel Central Registry
https://bcr.bazel.build/ adresindeki Bazel Central Registry (BCR), bazelbuild/bazel-central-registry
GitHub deposu tarafından desteklenen içeriklere sahip bir dizin kayıt defteridir. İçeriklerine https://registry.bazel.build/ adresindeki web ön ucu üzerinden göz atabilirsiniz.
BCR, Bazel topluluğu tarafından yönetilir ve katkıda bulunanlar çekme istekleri gönderebilir. BCR katkı yönergelerini inceleyin.
BCR, normal bir dizin kaydının biçimine uymanın yanı sıra her modül sürümü için bir presubmit.yml
dosyası da gerektirir
(/modules/$MODULE/$VERSION/presubmit.yml
). Bu dosya, bu modül sürümünün geçerliliğini kontrol etmek için kullanabileceğiniz birkaç temel derleme ve test hedefini belirtir. BCR'nin CI işlem hatları, modüller arasında birlikte çalışabilirliği sağlamak için de bu özelliği kullanır.
Kayıtları seçme
Modül isteğinde bulunulacak kayıt listesini belirtmek için tekrarlanabilir Bazel işareti --registry
kullanılabilir. Böylece projenizi, bağımlılıkları üçüncü taraf veya dahili bir kayıt defterinden getirecek şekilde ayarlayabilirsiniz. Daha önceki kayıtlar önceliklidir. Kolaylık sağlaması için --registry
işaretlerinin listesini projenizin .bazelrc
dosyasına ekleyebilirsiniz.
Kayıt defteriniz GitHub'da barındırılıyorsa (ör. bazelbuild/bazel-central-registry
'ın bir çatalı olarak) --registry
değeriniz raw.githubusercontent.com
altında ham bir GitHub adresi gerektirir. Örneğin, main
dalında my-org
çatalı için --registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/
değerini ayarlarsınız.
--registry
işaretini kullandığınızda Bazel Central Registry'nin varsayılan olarak kullanılması durdurulur ancak --registry=https://bcr.bazel.build
ekleyerek bu özelliği tekrar ekleyebilirsiniz.