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
.
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. Label yang sepenuhnya memenuhi syarat seperti
//path/to/package:target
terdiri dari //
untuk menandai root ruang kerja
, path/to/package
sebagai direktori yang berisi file BUILD
file yang mendeklarasikan target, dan :target
sebagai nama target
yang dideklarasikan dalam file BUILD
tersebut di atas. Dapat juga diawali dengan
@my_repository//<..>
untuk menunjukkan bahwa target dideklarasikan dalam lingkungan eksternal
repositori bernama my_repository
.
Fase pemuatan
Fase pertama build tempat Bazel mengurai WORKSPACE
, BUILD
, dan .bzl
file untuk membuat paket. Makro dan
fungsi seperti glob()
dievaluasi dalam fase ini. Disisipkan dengan yang kedua
dalam fase build, yaitu fase analisis, untuk membangun 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 deklarasi 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.
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. Terletak di output root pengguna.
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 terkait dengan root ruang kerja. J
paket dapat berisi subpaket, atau subdirektori yang berisi file 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
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.
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
Direktori yang berisi file WORKSPACE
dan kode sumber untuk software yang Anda
ingin Anda bangun. Label yang diawali dengan //
berhubungan dengan ruang kerja
saat ini.
File WORKSPACE
Menentukan direktori sebagai workspace. File tersebut boleh kosong, meskipun biasanya berisi deklarasi repositori eksternal untuk diambil dependensi tambahan dari jaringan atau sistem file lokal.