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 proyek dengan berbagai bahasa dan membangun {i>output<i} untuk berbagai platform. Dukungan Bazel codebase yang besar di beberapa repositori, dan pengguna dalam jumlah besar.
Manfaat
Bazel menawarkan keunggulan berikut:
Bahasa build tingkat tinggi. Bazel menggunakan konsep abstrak yang dapat dibaca manusia bahasa untuk mendeskripsikan properti build project Anda dengan pada tingkat semantik. Tidak seperti alat lain, Bazel beroperasi berdasarkan konsep perpustakaan, biner, skrip, dan {i>dataset<i}, melindungi Anda dari kompleksitas penulisan panggilan individual ke alat seperti compiler dan penaut.
Bazel adalah pelanggan yang 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}. Kalau begitu, Bazel tahu ketika ada sesuatu yang perlu dibangun ulang, dan hanya membangun ulang hanya itu. Untuk memperoleh mempercepat build Anda, Anda dapat mengatur proyek Anda untuk membangun dengan mode paralel dan inkremental.
Bazel adalah platform multiplatform. Bazel berjalan di Linux, macOS, dan Windows. Roti Bazel dapat membangun biner dan paket yang dapat di-deploy untuk berbagai platform, termasuk {i>desktop<i}, server, dan seluler, dari proyek yang sama.
Timbangan Bazel. Bazel mempertahankan ketangkasan sekaligus 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 didukung, dan Anda dapat menggunakan Bazel untuk mendukung bahasa atau Google Workspace for Education.
Menggunakan Bazel
Untuk membangun atau menguji project dengan Bazel, biasanya Anda melakukan hal berikut:
Siapkan Bazel. Download dan instal Bazel.
Menyiapkan ruang kerja project, yang merupakan direktori tempat Bazel mencari input build dan file
BUILD
, serta lokasinya 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 menetapkan sekumpulan artefak input yang akan dibangun Bazel plus dependensinya, aturan build yang akan digunakan Bazel untuk membangunnya, serta opsi yang mengonfigurasi aturan build.
Aturan pembangunan menentukan alat pembangunan yang akan digunakan Bazel, seperti compiler dan penaut, dan konfigurasinya. Bazel diluncurkan dengan sejumlah aturan build membahas jenis artefak paling umum dalam bahasa yang didukung di dan tersedia di platform yang didukung.
Jalankan Bazel dari command line. Roti Bazel menempatkan {i>output<i} Anda di dalam {i>workspace<i}.
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 dependensi, menerapkan build yang ditentukan aturan, dan menghasilkan tindakan grafik.
Mengeksekusi tindakan build di input hingga output build akhir dihasilkan akan diproduksi.
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 menegakkan lebih lanjut ketepatan, Anda dapat menyiapkan Bazel untuk menjalankan build dan pengujian secarahermetik melalui sandboxing, meminimalkan kemiringan dan memaksimalkan reproduksi.
Grafik tindakan
Grafik tindakan merepresentasikan artefak build, hubungan antar-elemen, dan tindakan build yang akan dilakukan Bazel. Berkat grafik ini, Bazel dapat lacak perubahan ke konten file serta perubahan tindakan, seperti perintah build atau pengujian, dan mengetahui pekerjaan build apa 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 lihat langsung ke tutorial Bazel: