Daftar Istilah Bazel

Laporkan masalah Lihat sumber Per malam · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Tindakan

Perintah yang dijalankan selama build, misalnya, panggilan ke compiler yang mengambil artefak sebagai input dan menghasilkan artefak lain sebagai output. Menyertakan metadata seperti argumen command line, tombol tindakan, lingkungan variabel, dan artefak input/output yang dideklarasikan.

Lihat juga: Dokumentasi aturan

Cache tindakan

Cache pada disk yang menyimpan pemetaan tindakan yang dieksekusi ke output yang mereka buat. Kunci cache disebut kunci tindakan. J dasar untuk model inkrementalitas Bazel. Cache disimpan di direktori basis {i>output<i} dan dengan demikian tetap bertahan ketika server Bazel dimulai ulang.

Grafik tindakan

Grafik dalam memori tentang tindakan dan artefak yang yang dibaca dan dihasilkan oleh tindakan ini. Grafik ini mungkin menyertakan artefak yang ada sebagai file sumber (misalnya, dalam sistem file) serta file yang dihasilkan artefak perantara/final yang tidak disebutkan dalam file BUILD. Diproduksi selama fase analisis dan digunakan selama eksekusi fase ini.

Kueri grafik tindakan (aquery)

Alat kueri yang dapat mengkueri atas tindakan build. Hal ini memberikan kemampuan untuk menganalisis bagaimana aturan build diterjemahkan ke dalam dari pekerjaan yang benar-benar dilakukan oleh build.

Tombol tindakan

Kunci cache tindakan. Dihitung berdasarkan metadata tindakan, yang mungkin termasuk perintah yang akan dieksekusi dalam tindakan, tanda compiler, {i>library<i} lokasi, atau header sistem, tergantung pada tindakannya. Mengaktifkan Bazel untuk meng-cache atau membatalkan tindakan individual dengan pasti.

Fase analisis

Fase kedua pembangunan. Memproses grafik target ditentukan dalam file BUILD untuk menghasilkan tindakan dalam memori grafik yang menentukan urutan tindakan yang akan dijalankan selama fase eksekusi. Ini adalah fase di mana aturan berbagai implementasi dievaluasi.

Artefak

File sumber atau file yang dihasilkan. Juga dapat berupa direktori file, yang dikenal sebagai artefak pohon.

Artefak dapat menjadi input untuk beberapa tindakan, tetapi hanya boleh dihasilkan oleh maksimal satu tindakan.

Artefak yang sesuai dengan target file dapat ditangani oleh label.

Aspek

Mekanisme bagi aturan untuk membuat tindakan tambahan dalam dependensi. Misalnya, jika target A bergantung pada B, seseorang dapat menerapkan aspek pada A yang melintasi atas edge dependensi ke B, dan menjalankan tindakan tambahan di B untuk membuat dan mengumpulkan file {i>output<i} tambahan. Tindakan tambahan ini di-cache dan digunakan kembali di antara target yang memerlukan aspek yang sama. Dibuat dengan aspect() Fungsi Starlark Build API. Dapat digunakan, misalnya, untuk membuat metadata untuk IDE, dan membuat tindakan untuk analisis lint.

Lihat juga: Dokumentasi aspek

Aspek di aspek

Mekanisme komposisi yang mana aspek dapat diterapkan pada hasil aspek lainnya. Misalnya, aspek yang menghasilkan informasi untuk digunakan oleh IDE dapat diterapkan di atas aspek yang menghasilkan file .java dari proto

Agar aspek A dapat diterapkan di atas aspek B, penyedia yang B beriklan di atribut provides harus sesuai dengan yang dideklarasikan A dalam required_aspect_providers .

Atribut

Parameter ke aturan, yang digunakan untuk menyatakan informasi build per target. Contohnya mencakup srcs, deps, dan copts, yang masing-masing mendeklarasikan file sumber, dependensi, dan opsi compiler kustom target. Tujuan yang tersedia untuk target tertentu bergantung pada jenis aturannya.

.bazelrc

File konfigurasi Bazel yang digunakan untuk mengubah nilai default untuk startup flag dan command flag, serta untuk menentukan kelompok opsi yang kemudian dapat diatur bersama pada baris perintah Bazel menggunakan flag --config. Bazel dapat menggabungkan setelan dari beberapa file bazelrc (seluruh sistem, per ruang kerja, per pengguna, atau dari lokasi khusus), dan File bazelrc juga dapat mengimpor setelan dari file bazelrc lainnya.

Blaze

Versi internal Google Bazel. Sistem build utama Google untuk repositori mono.

BUILD File

File BUILD adalah file konfigurasi utama yang memberi tahu Bazel software apa output yang akan dibangun, apa dependensinya, dan cara membangunnya. Roti Bazel mengambil file BUILD sebagai input dan menggunakan file tersebut untuk membuat grafik dependensi dan untuk memperoleh tindakan yang harus diselesaikan untuk membangun output software. File BUILD menandai direktori dan subdirektori mana pun yang tidak berisi file BUILD sebagai paket, dan dapat berisi target yang dibuat oleh aturan. File juga dapat diberi nama BUILD.bazel.

File BUILD.bazel

Lihat File BUILD. Lebih diutamakan daripada file BUILD dalam file yang sama saat ini.

File .bzl

File yang menentukan aturan, makro, dan konstanta yang ditulis dalam Starlark. Data ini kemudian dapat diimpor ke BUILD file menggunakan fungsi load().

Buat grafik

Grafik dependensi yang dibuat dan dilalui Bazel untuk melakukan build. Mencakup node seperti target, yang dikonfigurasi target, tindakan, dan artefak. J build dianggap lengkap jika semua artefak tempat sekumpulan target yang diminta diverifikasi sebagai yang terbaru.

Setelan build

Bagian dari konfigurasi yang ditentukan Starlark. Transitions dapat menetapkan setelan build untuk mengubah subgrafik konfigurasi Anda. Jika diekspos kepada pengguna sebagai flag command line, yang juga dikenal sebagai flag build.

Clean build

Build yang tidak menggunakan hasil build sebelumnya. Biasanya ini lebih lambat daripada build inkremental tetapi umumnya dianggap lebih benar. Bazel menjamin build bersih dan inkremental selalu benar.

Model klien-server

Klien command line bazel akan otomatis memulai server latar belakang di komputer lokal untuk menjalankan perintah Bazel. Server tetap ada selama perintah namun secara otomatis berhenti setelah tidak aktif selama beberapa waktu (atau secara eksplisit melalui bazel mati). Membagi Bazel ke dalam server dan klien membantu amortisasi JVM waktu startup dan mendukung build inkremental yang lebih cepat karena grafik tindakan tetap tersimpan di memori di seluruh perintah.

Perintah

Digunakan pada command line untuk memanggil fungsi Bazel yang berbeda, seperti bazel build, bazel test, bazel run, dan bazel query.

Flag perintah

Sekumpulan tanda khusus untuk perintah. Tanda perintah ditentukan setelah perintah (bazel build <command flags>). Tanda dapat berlaku untuk satu atau beberapa perintah. Misalnya, --configure adalah flag khusus untuk perintah bazel sync, tetapi --keep_going berlaku untuk sync, build, test dan lainnya. Tanda sering digunakan untuk konfigurasi tujuan, jadi perubahan nilai flag dapat menyebabkan Bazel membatalkan validasi dalam memori grafik dan memulai ulang fase analisis.

Konfigurasi

Informasi di luar definisi aturan yang memengaruhi cara pembuatan aturan tindakan. Setiap build memiliki minimal satu konfigurasi yang menentukan platform target, variabel lingkungan tindakan, dan build command line flag. Transisi dapat membuat seperti untuk alat host atau kompilasi silang.

Lihat juga: Konfigurasi

Pemangkasan konfigurasi

Proses yang hanya menyertakan bagian konfigurasi target yang sebenarnya. Misalnya, jika Anda membangun biner Java //:j dengan C++ dependensi //:c, maka sia-sia saja untuk menyertakan nilai --javacopt dalam konfigurasi //:c karena mengubah --javacopt tidak perlu merusak C++ kemampuan cache build.

Kueri yang dikonfigurasi (cquery)

Alat kueri yang membuat kueri melalui konfigurasi target (setelah fase analisis hingga selesai). Ini berarti select() dan flag build (seperti --platforms) ditampilkan secara akurat dalam hasil.

Lihat juga: dokumentasi kueri

Target yang dikonfigurasi

Hasil evaluasi target dengan konfigurasi. Fase analisis menghasilkan hal ini dengan menggabungkan opsi build dengan target yang perlu dibangun. Misalnya, jika //:foo mem-build untuk dua arsitektur yang berbeda dengan arsitektur yang sama build ini memiliki dua target yang telah dikonfigurasi: <//:foo, x86> dan <//:foo, arm>.

Ketepatan

Sebuah build dianggap benar jika output-nya mencerminkan status build input transitif. Untuk mencapai bentuk tubuh yang benar, Bazel berusaha untuk hermetik, dapat direproduksi, dan membuat build analisis dan eksekusi tindakan determenistik.

Dependensi

Tepi terarah antara dua target. Target //:foo memiliki target dependensi pada //:bar target jika nilai atribut //:foo berisi referensi ke //:bar. //:foo memiliki dependensi tindakan pada //:bar jika tindakan di //:foo bergantung pada artefak input yang dibuat oleh tindakan di //:bar.

Dalam konteks tertentu, kode ini juga dapat merujuk ke dependensi eksternal; lihat modul.

Depset

Struktur data untuk mengumpulkan data tentang dependensi transitif. Dioptimalkan agar bahwa penggabungan {i>depset <i}akan menghemat waktu dan ruang, karena biasanya depset yang sangat besar (ratusan ribu file). Diterapkan ke merujuk ke depset lain secara rekursif untuk alasan efisiensi ruang. Aturan implementasi tidak boleh "diratakan" dengan mengonversinya menjadi daftar, kecuali aturannya berada di level teratas grafik build. Meratakan depset yang besar menimbulkan konsumsi memori yang besar. Juga dikenal sebagai kumpulan bertingkat dalam materi internal Bazel terlepas dari implementasi layanan.

Lihat juga: Dokumentasi Depset

Cache disk

Toko blob on-disk lokal untuk fitur penyimpanan cache jarak jauh. Dapat digunakan di bersama dengan penyimpanan blob jarak jauh yang sebenarnya.

Distdir

Direktori hanya-baca yang berisi file yang seharusnya diambil Bazel dari internet menggunakan aturan repositori. Memungkinkan build berjalan sepenuhnya secara offline.

Eksekusi dinamis

Strategi eksekusi yang memilih antara eksekusi lokal dan jarak jauh berdasarkan berbagai heuristik, dan menggunakan hasil eksekusi dari . Tindakan tertentu dijalankan lebih cepat secara lokal (misalnya, penautan) dan lainnya lebih cepat dari jarak jauh (misalnya, sangat dapat diparalelkan kompilasi). Strategi eksekusi dinamis dapat memberikan hasil waktu build inkremental dan bersih.

Fase eksekusi

Fase ketiga pembangunan. Menjalankan tindakan dalam tindakan grafik yang dibuat selama fase analisis. Tindakan ini memanggil file yang dapat dieksekusi (compiler, skrip) untuk membaca dan menulis artefak. Strategi memunculkan mengontrol cara tindakan ini dieksekusi: secara lokal, jarak jauh, secara dinamis, di-sandbox, Docker, dan sebagainya.

Root eksekusi

Direktori di basis output workspace direktori tempat tindakan lokal dieksekusi di build yang tidak di-sandbox. Isi direktori sebagian besar berupa {i>symlink<i} artefak input dari ruang kerja. Root eksekusi juga berisi symlink ke repositori eksternal sebagai input lain dan bazel-out untuk menyimpan output-nya. Disiapkan selama fase pemuatan dengan membuat forest symlink direktori yang mewakili model transitif penutupan paket yang menjadi tempat bergantungnya build. Dapat diakses dengan bazel info execution_root pada command line.

File

Lihat Artifact.

Hermeticity

Build bersifat hermetic jika tidak ada pengaruh eksternal pada build dan pengujiannya operasi, yang membantu memastikan bahwa hasilnya determenistik dan benar. Misalnya, build hermetic biasanya melarang jaringan akses ke tindakan, membatasi akses ke input yang dideklarasikan, menggunakan stempel waktu tetap, dan zona waktu, membatasi akses ke variabel lingkungan, dan menggunakan seed tetap untuk generator angka acak

Build inkremental

Build inkremental menggunakan kembali hasil build sebelumnya untuk mengurangi waktu build dan penggunaan resource. Pemeriksaan dependensi dan {i>caching<i} bertujuan untuk menghasilkan hasil untuk jenis build ini. Build inkremental adalah kebalikan dari konfigurasi buat.

Label

ID untuk target. Umumnya memiliki bentuk @repo//path/to/package:target, dengan repo adalah nama (jelas) dari repositori yang berisi target, path/to/package adalah jalurnya ke direktori yang berisi file BUILD yang mendeklarasikan target (direktori ini juga dikenal sebagai paket), dan target adalah nama target itu sendiri. Tergantung pada situasinya, sintaksis dapat diabaikan.

Lihat juga: Label

Fase pemuatan

Fase pertama build tempat Bazel mengeksekusi file BUILD untuk membuat paket. Makro dan fungsi tertentu seperti glob() dievaluasi dalam fase ini. Diselingi dengan fase kedua dari build, fase analisis, untuk menyusun target grafik.

Macro

Mekanisme untuk menyusun beberapa deklarasi target aturan bersama-sama di fungsi Starlark tunggal. Memungkinkan penggunaan kembali pernyataan aturan umum pola di seluruh file BUILD. Diluaskan ke target aturan pokok selama fase pemuatan.

Lihat juga: Dokumentasi makro

Mnemonik

String pendek yang dapat dibaca manusia yang dipilih oleh penulis aturan untuk dipahami dengan cepat apa yang dilakukan suatu tindakan dalam aturan. Mnemonik dapat digunakan sebagai ID untuk pilihan strategi spawn. Beberapa contoh mnemonik aksi adalah Javac dari aturan Java, CppCompile dari aturan C++, dan AndroidManifestMerger dari aturan Android.

Modul

Proyek Bazel yang dapat memiliki beberapa versi, yang masing-masing dapat memiliki dependensi pada modul lain. Hal ini sejalan dengan konsep yang sudah dikenal dalam topik lain sistem manajemen dependensi seperti artefak Maven, paket npm, Go modul, atau crate Cargo. Modul membentuk tulang punggung eksternal Bazel sistem manajemen dependensi.

Setiap modul didukung oleh repo dengan file MODULE.bazel di {i>root<i}. File ini berisi metadata tentang modul itu sendiri (seperti nama dan ), dependensi langsungnya, dan berbagai data lain, termasuk toolchain pendaftaran dan ekstensi modul.

Metadata modul dihosting di registry Bazel.

Lihat juga: Modul Bazel

Ekstensi Modul

Bagian logika yang dapat dijalankan untuk membuat repositori dengan membaca input dari seluruh grafik dependensi modul dan memanggil repo . Ekstensi modul memiliki kemampuan yang mirip dengan repo standar, yang memungkinkan mereka mengakses internet, melakukan I/O file, dan sebagainya.

Lihat juga: Ekstensi modul

Aturan native

Aturan yang disertakan dalam Bazel dan diterapkan di Java. Aturan tersebut muncul di file .bzl sebagai fungsi dalam modul native (untuk misalnya, native.cc_library atau native.java_library). Aturan yang ditentukan pengguna (non-native) dibuat menggunakan Starlark.

Basis output

Direktori khusus workspace untuk menyimpan file output Bazel. Bekas untuk memisahkan output dari hierarki sumber workspace (tampilan utama Repositories). Terletak di root pengguna output.

Grup output

Sekelompok file yang diharapkan akan dibangun ketika Bazel selesai membangun target. Aturan menempatkan output biasanya di "grup output default" (misalnya file .jar dari java_library, .a, dan .so untuk cc_library target). Grup {i>output<i} {i>default<i} adalah grup {i>output<i} yang artefak dibuat saat target diminta pada command line. Aturan dapat menentukan lebih banyak grup output bernama yang dapat ditentukan secara eksplisit dalam BUILD file (aturan filegroup) atau command line (flag --output_groups).

Root pengguna output

Direktori khusus pengguna untuk menyimpan {i>output<i} Bazel. Nama direktorinya adalah berasal dari nama pengguna sistem pengguna. Mencegah konflik file output jika beberapa pengguna membangun proyek yang sama pada sistem di saat yang sama. Berisi subdirektori yang sesuai dengan {i>output<i} build dari setiap ruang kerja, yang juga dikenal sebagai basis output.

Paket

Kumpulan target yang ditentukan oleh file BUILD. J nama paket adalah jalur file BUILD yang relatif terhadap repo {i>root<i}. Paket dapat berisi subpaket, atau subdirektori yang berisi BUILD sehingga membentuk hierarki paket.

Grup paket

Target yang mewakili sekumpulan paket. Sering digunakan di visibility nilai atribut.

Platform

"Jenis mesin" yang terlibat dalam sebuah build. Ini termasuk perangkat yang digunakan Bazel (platform "host"), alat build mesin mengeksekusi di platform ("exec"), dan target mesin yang dibuat ("platform target").

Penyedia

Skema yang menjelaskan unit informasi yang akan diteruskan antara target aturan beserta hubungan dependensi. Biasanya seperti ini berisi informasi seperti opsi compiler, file sumber atau {i>output<i} transitif, dan membangun metadata. Sering digunakan bersama dengan depset untuk secara efisien menyimpan data transitif yang terakumulasi. Contoh penyedia bawaan adalah DefaultInfo.

Lihat juga: Dokumentasi penyedia

Kueri (konsep)

Proses menganalisis grafik build untuk memahami properti target dan struktur dependensi. Bazel mendukung tiga varian kueri: query, cquery, dan kueri.

query (perintah)

Alat kueri yang beroperasi melalui proses pasca-pemuatan build fase grafik target. Prosesnya relatif cepat, tetapi tidak dapat menganalisis efek select(), tanda build, artefak, atau tindakan build.

Lihat juga: Petunjuk kueri, Referensi kueri

Repositori

Hierarki direktori dengan file penanda batas di root-nya, yang berisi sumber file yang dapat digunakan dalam versi Bazel. Sering dipersingkat menjadi repo.

File penanda batas repo dapat berupa MODULE.bazel (yang menandakan bahwa repositori ini mewakili modul Bazel), REPO.bazel, atau dalam konteks lama, WORKSPACE atau WORKSPACE.bazel. Setiap file penanda batas repo akan menandakan batas repo; beberapa file seperti itu dapat berdampingan dalam direktori.

Repositori utama adalah repositori tempat perintah Bazel saat ini dijalankan.

Repositori eksternal ditentukan dengan menentukan modul di MODULE.bazel file, atau memanggil aturan repo dalam modul ekstensi. Iklan ini dapat diambil sesuai permintaan hingga "ajaib" lokasi pada {i>disk<i}.

Setiap repo memiliki nama kanonik yang unik dan konstan, serta kemungkinan nama yang jelas jika dilihat dari repositori lain.

Lihat juga: Ringkasan dependensi eksternal

Cache repositori

{i>Cache<i} file bersama yang dapat diberi alamat konten yang diunduh oleh Bazel untuk build, dapat dibagikan di seluruh ruang kerja. Aktifkan build offline setelah download awal. Biasa digunakan untuk meng-cache file yang didownload melalui repositori aturan seperti http_archive dan API aturan repositori seperti repository_ctx.download. File di-cache hanya jika {i>checksum<i} SHA-256 disimpan yang ditentukan untuk download.

Aturan repositori

Skema untuk definisi repositori yang memberi tahu Bazel cara mewujudkan (atau "fetch") dengan repositori. Sering kali dipersingkat menjadi aturan repo. Aturan repo dipanggil oleh Bazel secara internal untuk mendefinisikan repo yang didukung oleh modul, atau dapat dipanggil oleh ekstensi modul. Aturan repo dapat mengakses internet atau melakukan I/O file; repositori yang paling umum aturannya adalah http_archive untuk mendownload arsip yang berisi file sumber dari di Internet.

Lihat juga: Dokumentasi aturan repo

Kemampuan reproduksi

Properti build atau pengujian bahwa satu set input untuk build atau pengujian akan selalu menghasilkan rangkaian {i>output<i} yang sama setiap saat, terlepas dari waktu, metode, atau lingkungannya. Perhatikan bahwa ini tidak berarti bahwa output-nya correct atau output yang diinginkan.

Aturan

Skema untuk menentukan target aturan dalam file BUILD, seperti cc_library. Dari perspektif penulis file BUILD, sebuah aturan terdiri dari sekumpulan atribut dan logika kotak hitam. Logika memberi tahu menargetkan cara menghasilkan artefak output dan meneruskan informasi ke target aturan lainnya. Dari perspektif .bzl penulis, aturan adalah cara utama untuk memperluas Bazel guna mendukung bahasa pemrograman baru dan lingkungan fleksibel App Engine.

Aturan dibuat instance-nya untuk menghasilkan target aturan di fase pemuatan. Dalam aturan fase analisis target mengomunikasikan informasi ke dependensi downstreamnya dalam bentuk penyedia, dan mendaftarkan tindakan yang menjelaskan cara menghasilkan artefak {i>outputnya<i}. Tindakan ini dijalankan dalam eksekusi fase ini.

Lihat juga: Dokumentasi aturan

Target aturan

Target yang merupakan instance aturan. Berbeda dengan target file dan paket layanan. Harap bedakan dengan rule.

{i>Runfile<i}

Dependensi runtime dari target yang dapat dieksekusi. Paling umum, {i>executable<i} adalah {i>output<i} yang dapat dieksekusi dari aturan pengujian, dan runfile adalah {i>runtime<i} dependensi data pengujian. Sebelum pemanggilan file yang dapat dieksekusi (selama {i>bazel test<i}), Bazel menyiapkan pohon {i>runfile<i} beserta tes yang dapat dijalankan sesuai dengan struktur direktori sumbernya.

Lihat juga: Dokumentasi Runfiles

Sandboxing

Teknik untuk mengisolasi tindakan yang sedang berjalan di dalam root eksekusi sementara, membantu memastikan bahwa itu tidak membaca input yang tidak dideklarasikan atau menulis output yang tidak dideklarasikan. Sandboxing meningkat secara signifikan hermeticity, tetapi biasanya menimbulkan biaya performa, dan memerlukan dukungan dari sistem operasi. Biaya performa bergantung pada platform. Di Linux, hal ini tidak signifikan, tetapi di macOS, hal ini dapat membuat sandbox tidak dapat digunakan.

Rangka Langit

Skyframe adalah framework evaluasi paralel, fungsional, dan inkremental inti Bazel.

Pengecapan

Fitur untuk menyematkan informasi tambahan ke artefak. Misalnya, ini dapat digunakan untuk kontrol sumber, build waktu, dan informasi terkait lingkungan atau ruang kerja lainnya untuk build rilis. Aktifkan melalui tanda dan aturan --workspace_status_command yang mendukung atribut stempel.

Starlark

Bahasa ekstensi untuk menulis aturan dan makro. J subset dari Python yang terbatas (sintaksis dan gramatikal) yang ditujukan untuk tujuan konfigurasi, dan untuk kinerja yang lebih baik. Menggunakan .bzl file. BUILD file menggunakan lebih banyak Starlark versi terbatas (seperti tidak ada definisi fungsi def), sebelumnya yang dikenal sebagai Skylark.

Lihat juga: Dokumentasi bahasa Starlark

Tanda startup

Kumpulan flag yang ditentukan antara bazel dan perintah, misalnya, build bazel --host_jvm_debug. Tanda ini memodifikasi konfigurasi server Bazel, sehingga setiap modifikasi pada flag startup menyebabkan server dimulai ulang. Tanda startup tidak spesifik untuk setiap perintah.

Target

Objek yang ditentukan dalam file BUILD dan diidentifikasi oleh label. Target mewakili unit ruang kerja yang dapat dibangun. perspektif pengguna akhir.

Target yang dideklarasikan dengan membuat instance aturan disebut aturan target layanan. Bergantung pada aturannya, parameter ini dapat dijalankan (seperti cc_binary) atau dapat diuji (seperti cc_test). Target aturan biasanya bergantung pada target lain melalui atribut mereka (seperti deps); berikut dependensi membentuk dasar grafik target.

Selain target aturan, ada juga target file dan grup paket target. Target file sesuai dengan artefak yang direferensikan dalam file BUILD. Sebagai kasus khusus, file BUILD dari paket apa pun akan selalu dianggap sebagai target file sumber dalam paket itu.

Target ditemukan selama fase pemuatan. Selama fase analisis, target dikaitkan dengan build untuk membentuk konfigurasi target.

Grafik target

Grafik dalam memori yang berisi target dan dependensinya. Diproduseri selama fase pemuatan dan digunakan sebagai input untuk analisis fase ini.

Pola target

Cara untuk menentukan grup target pada command line. Umumnya pola yang digunakan adalah :all (semua target aturan), :* (semua aturan + target file), ... (paket saat ini dan semua sub-paket secara rekursif). Dapat digunakan dalam kombinasinya, misalnya, //...:* berarti semua aturan dan target file di semua paket secara rekursif dari root workspace.

Pengujian

Target aturan dibuat dari aturan pengujian sehingga berisi file uji yang dapat dieksekusi. Kode pengembalian nol dari penyelesaian file yang dapat dieksekusi menunjukkan keberhasilan pengujian. Kontrak yang tepat antara Bazel dan pengujian (seperti pengujian variabel lingkungan, metode pengumpulan hasil pengujian) ditentukan dalam kolom Ensiklopedia.

Toolchain

Sekumpulan alat untuk membangun output untuk suatu bahasa. Biasanya, toolchain berisi compiler, penaut, penafsir, atau/dan linter. Toolchain juga dapat bervariasi berdasarkan platform ini, yaitu, komponen toolchain compiler Unix mungkin berbeda untuk Varian Windows, meskipun toolchain untuk bahasa yang sama. Memilih toolchain yang tepat untuk platform dikenal sebagai resolusi toolchain.

Target tingkat teratas

Target build adalah level teratas jika diminta pada perintah Bazel garis. Misalnya, jika //:foo bergantung pada //:bar, dan bazel build //:foo adalah dipanggil, maka untuk build ini, //:foo adalah level teratas, dan //:bar bukan tingkat atas, meskipun kedua target tersebut perlu dibangun. Perbedaan yang penting antara target tingkat atas dan bukan tingkat atas adalah perintah flag yang disetel pada command line Bazel (atau melalui .bazelrc) akan menetapkan konfigurasi untuk level teratas target, tetapi dapat dimodifikasi oleh transisi untuk kampanye non-top target.

Transisi

Pemetaan status konfigurasi dari satu nilai ke nilai lainnya. Mengaktifkan target di grafik build agar memiliki perbedaan konfigurasinya, meskipun dibuat instance-nya dari aturan yang sama. J penggunaan transisi yang umum adalah dengan transisi terpisah, di mana bagian tertentu grafik target dibagi dengan konfigurasi berbeda untuk setiap garpu. Misalnya, seseorang dapat membangun APK Android dengan biner native dikompilasi untuk ARM dan x86 menggunakan transisi terpisah dalam satu build.

Lihat juga: Transisi yang ditentukan pengguna

Artefak pohon

Artefak yang mewakili kumpulan file. Karena layanan file itu sendiri bukan artefak, tindakan yang beroperasi pada file tersebut harus sebagai gantinya daftarkan artefak pohon sebagai input atau output-nya.

Visibilitas

Salah satu dari dua mekanisme untuk mencegah dependensi yang tidak diinginkan dalam sistem build: visibilitas target untuk mengontrol apakah target dapat diandalkan oleh target lain; dan visibilitas pemuatan untuk mengontrol apakah BUILD atau file .bzl dapat memuat file .bzl tertentu. Tanpa konteks, biasanya "visibilitas" merujuk pada visibilitas target.

Lihat juga: Dokumentasi visibilitas

Workspace

Lingkungan yang digunakan bersama oleh semua perintah Bazel yang dijalankan dari layanan utama yang sama repositori Anda.

Perhatikan bahwa secara historis konsep "repositori" dan "workspace" telah bercampur; istilah "ruang kerja" sering digunakan untuk mengacu pada repositori, dan kadang-kadang bahkan digunakan sebagai sinonim dari "repositori". Penggunaan tersebut harus dihindari agar lebih jelas.