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:$MODULEadlı modülün her sürümü için bir alt dizin ve bu modülün meta verilerini içerenmetadata.jsondosyası 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.bazeldosyası. Bunun, Bazel'in harici bağımlılık çözümlemesi sırasında okunanMODULE.bazeldosyası 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.bazeldosyası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.jsondosyası tarafından belirtilen modülün kaynak URL'sinin birleştirilmesidir. Örneğin, bir modülün kaynak URL'sihttps://foo.com/bar/bazise 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/bazve son olarak orijinal kaynak URL'nin kendisihttps://foo.com/bar/bazolur.
- Yansıtılan URL, yansıtmanın kendisi ile protokol hariç
module_base_path:source.jsondosyasındalocal_pathtü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.
typearchive(varsayılan) ise bu modül sürümü birhttp_archivedepo 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,urlsonrası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/overlaydizininde 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/patchesdizininde 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 vepatchesiçinde göründükleri sırayla uygulanır.patch_strip: Bir sayı; Unixpatchöğesinin--stripbağımsız değişkeniyle aynıdır.archive_type: İndirilen dosyanın arşiv türünü belirten bir dize (http_archiveüzerindekitypeile aynıdır).
typegit_repositoryise bu modül sürümü birgit_repositorydepo kuralı tarafından desteklenir ve Git deposu klonlanarak getirilir.- Aşağıdaki alanlar desteklenir ve doğrudan temel
git_repositorydepo kuralına yönlendirilir:remote,commit,shallow_since,tag,init_submodules,verbosevestrip_prefix.
- Aşağıdaki alanlar desteklenir ve doğrudan temel
typelocal_pathise bu modül sürümü birlocal_repositorydepo 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:pathmutlak bir yol ise olduğu gibi kalır.pathgöreli bir yol vemodule_base_pathmutlak bir yol ise<module_base_path>/<path>olarak çözümlenir.- Hem
pathhem demodule_base_pathgö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.