Bazel adalah alat build dan pengujian open source yang mirip dengan Make, Maven, dan Gradle. Alat ini menggunakan bahasa build tingkat tinggi yang dapat dibaca manusia. Bazel mendukung project dalam beberapa bahasa dan membuat output build untuk beberapa platform. Bazel mendukung codebase besar di beberapa repositori, dan sejumlah besar pengguna.
Manfaat
Bazel menawarkan keuntungan berikut:
Bahasa build tingkat tinggi. Bazel menggunakan bahasa abstrak yang dapat dibaca manusia untuk mendeskripsikan properti build project Anda pada tingkat semantik yang tinggi. Tidak seperti alat lainnya, Bazel beroperasi pada konsep library, biner, skrip, dan set data, sehingga Anda tidak perlu menulis panggilan individual ke alat seperti compiler dan linker.
Bazel cepat dan andal. Bazel menyimpan dalam cache semua pekerjaan yang telah dilakukan sebelumnya dan melacak perubahan pada konten file dan perintah build. Dengan cara ini, Bazel mengetahui kapan sesuatu perlu dibangun kembali, dan hanya membangun kembali hal tersebut. Untuk lebih mempercepat build, Anda dapat menyiapkan project untuk membangun dengan cara yang sangat paralel dan inkremental.
Bazel bersifat multi-platform. Bazel berjalan di Linux, macOS, dan Windows. Bazel dapat membangun biner dan paket yang dapat di-deploy untuk beberapa platform, termasuk desktop, server, dan seluler, dari project yang sama.
Bazel dapat diskalakan. Bazel mempertahankan ketangkasan saat menangani build dengan lebih dari 100 ribu file sumber. Alat ini berfungsi dengan beberapa repositori dan basis pengguna dalam puluhan ribu.
Bazel dapat diperluas. Banyak bahasa yang didukung, dan Anda dapat memperluas Bazel untuk mendukung bahasa atau framework lainnya.
Menggunakan Bazel
Untuk membangun atau menguji project dengan Bazel, Anda biasanya melakukan hal berikut:
Menyiapkan Bazel. Download dan instal Bazel.
Menyiapkan workspace project, yang merupakan direktori tempat Bazel mencari input build dan file
BUILD, serta tempat Bazel menyimpan output build.Menulis file
BUILD, yang memberi tahu Bazel apa yang akan dibangun dan cara membangunnya.Anda menulis file
BUILDdengan mendeklarasikan target build menggunakan Starlark, bahasa khusus domain. (Lihat contoh di sini.)Target build menentukan sekumpulan artefak input yang akan dibangun Bazel beserta dependensinya, aturan build yang akan digunakan Bazel untuk membangunnya, dan opsi yang mengonfigurasi aturan build.
Aturan build menentukan alat build yang akan digunakan Bazel, seperti compiler dan linker, serta konfigurasinya. Bazel dilengkapi dengan sejumlah aturan build yang mencakup jenis artefak paling umum dalam bahasa yang didukung di platform yang didukung.
Menjalankan Bazel dari command line. Bazel menempatkan output Anda dalam ruang kerja.
Selain membangun, Anda juga dapat menggunakan Bazel untuk menjalankan pengujian dan membuat kueri build untuk melacak dependensi dalam kode Anda.
Proses build Bazel
Saat menjalankan build atau pengujian, Bazel melakukan hal berikut:
Memuat file
BUILDyang relevan dengan target.Menganalisis input dan dependensinya, menerapkan aturan build yang ditentukan, dan menghasilkan grafik tindakan.
Menjalankan tindakan build pada input hingga output build akhir dihasilkan.
Karena semua pekerjaan build sebelumnya di-cache, Bazel dapat mengidentifikasi dan menggunakan kembali artefak yang di-cache dan hanya membangun kembali atau menguji ulang apa yang telah berubah. Untuk lebih menegakkan kebenaran, Anda dapat menyiapkan Bazel untuk menjalankan build dan pengujian secara hermetis melalui sandboxing, meminimalkan kemiringan dan memaksimalkan kemampuan reproduksi.
Grafik tindakan
Grafik tindakan mewakili artefak build, hubungan di antara keduanya, dan tindakan build yang akan dilakukan Bazel. Berkat grafik ini, Bazel dapat melacak perubahan pada konten file serta perubahan pada tindakan, seperti perintah build atau pengujian, dan mengetahui pekerjaan build yang telah dilakukan sebelumnya. Grafik ini juga memungkinkan Anda melacak dependensi dalam kode dengan mudah. dengan mudah melacak dependensi
Tutorial memulai
Untuk mulai menggunakan Bazel, lihat Memulai atau langsung buka tutorial Bazel: