Bazel adalah alat build dan pengujian open source yang mirip dengan Make, Maven, dan Gradle. Library ini menggunakan bahasa build tingkat tinggi yang dapat dibaca manusia. Bazel mendukung project dalam beberapa bahasa dan mem-build output untuk beberapa platform. Bazel mendukung codebase besar di beberapa repositori, dan sejumlah besar pengguna.
Manfaat
Bazel menawarkan keunggulan 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 berdasarkan konsep library, biner, skrip, dan set data, yang melindungi Anda dari kompleksitas penulisan setiap panggilan ke alat seperti compiler dan penaut.
Bazel cepat dan andal. Bazel meng-{i>cache<i} semua pekerjaan yang telah dilakukan sebelumnya dan melacak perubahan pada isi file dan perintah {i>build<i}. Dengan cara ini, Bazel mengetahui kapan sesuatu perlu dibuat ulang, dan hanya membuat ulang hal tersebut. Untuk mempercepat build lebih lanjut, Anda dapat menyiapkan project untuk di-build dengan cara yang sangat paralel dan inkremental.
Bazel bersifat multi-platform. Bazel berjalan di Linux, macOS, dan Windows. Bazel dapat mem-build biner dan paket yang dapat di-deploy untuk beberapa platform, termasuk desktop, server, dan seluler, dari project yang sama.
Skala Bazel. Bazel mempertahankan kelincahan saat menangani build dengan lebih dari 100 ribu file sumber. Alat ini berfungsi dengan banyak repositori dan basis pengguna dalam hitungan puluhan dalam jumlah besar.
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, biasanya Anda melakukan hal berikut:
Siapkan Bazel. Download dan instal Bazel.
Siapkan ruang kerja project, yang merupakan direktori tempat Bazel mencari input build dan file
BUILD
, serta tempat menyimpan output build.Menulis file
BUILD
, yang memberi tahu Bazel apa yang harus di-build dan cara membuatnya membangunnya.Anda menulis file
BUILD
dengan mendeklarasikan target build menggunakan Starlark, bahasa khusus domain. (Lihat contoh di sini.)Target build menentukan sekumpulan artefak input yang akan di-build oleh Bazel beserta dependensinya, aturan build yang akan digunakan Bazel untuk mem-build-nya, dan opsi yang mengonfigurasi aturan build.
Aturan build menentukan alat build yang akan digunakan Bazel, seperti compiler dan penaut, serta konfigurasinya. Bazel dikirimkan dengan sejumlah aturan build yang mencakup jenis artefak paling umum dalam bahasa yang didukung di platform yang didukung.
Jalankan Bazel dari command line. Bazel menempatkan output Anda dalam ruang kerja.
Selain membangun, kamu juga bisa menggunakan Bazel untuk menjalankan pengujian dan membuat kueri build melacak dependensi dalam kode Anda.
Proses build Bazel
Saat menjalankan build atau pengujian, Bazel melakukan hal berikut:
Memuat file
BUILD
yang relevan dengan target.Menganalisis input dan dependencies, menerapkan build yang ditentukan aturan, dan menghasilkan tindakan grafik.
Menjalankan tindakan build pada input hingga output build akhir dihasilkan.
Karena semua pekerjaan build sebelumnya di-cache, Bazel dapat mengidentifikasi dan menggunakan kembali yang di-cache artefak dan hanya membangun ulang atau menguji ulang apa yang berubah. Untuk lebih menerapkan kebenaran, Anda dapat menyiapkan Bazel untuk menjalankan build dan pengujian secara hermetis melalui sandboxing, meminimalkan penyimpangan dan memaksimalkan reproducibilitas.
Grafik tindakan
Grafik tindakan merepresentasikan artefak build, hubungan di antara artefak tersebut, 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 untuk melacak dependensi dalam kode Anda dengan mudah.
Tutorial memulai
Untuk mulai menggunakan Bazel, lihat Memulai atau langsung membuka tutorial Bazel: