Bazel adalah alat build yang cepat, akurat, dan dapat diperluas dengan pengujian terintegrasi yang mendukung beberapa bahasa, repositori, dan platform dalam ekosistem terkemuka di industri.
Bazel cepat
Bazel mengetahui dengan tepat file input yang dibutuhkan setiap perintah build, sehingga menghindari pekerjaan yang tidak perlu dengan menjalankan ulang hanya jika kumpulan file input telah berubah di antara setiap build. Bazel menjalankan perintah build dengan paralelisme sebanyak mungkin, baik dalam komputer yang sama maupun di node build jarak jauh. Jika struktur build memungkinkan, Bazel dapat menjalankan ribuan perintah build atau pengujian secara bersamaan.
Hal ini didukung oleh beberapa lapisan cache, dalam memori, di disk, dan di farm build jarak jauh, jika tersedia. Di Google, kami secara rutin mencapai rasio hit cache di atas 99%.
Bazel akurat
Bazel memastikan bahwa biner Anda dibuat hanya dari kode sumber Anda sendiri. Tindakan Bazel berjalan di sandbox individual dan Bazel melacak setiap file input build, hanya dan selalu menjalankan ulang perintah build saat diperlukan. Hal ini membuat biner Anda selalu terbaru sehingga kode sumber yang sama akan selalu menghasilkan biner yang sama, bit demi bit.
Ucapkan selamat tinggal pada pemanggilan make clean yang tak ada habisnya dan mengejar bug phantom yang sebenarnya diselesaikan dalam kode sumber yang tidak pernah dibuat.
Bazel dapat diperluas
Manfaatkan kekuatan penuh Bazel dengan menulis aturan dan makro Anda sendiri untuk menyesuaikan Bazel untuk kebutuhan spesifik Anda di berbagai project.
Aturan Bazel ditulis dalam Starlark, bahasa pemrograman internal kami yang merupakan subset Python. Starlark membuat penulisan aturan dapat diakses oleh sebagian besar developer, sekaligus membuat aturan yang dapat digunakan di seluruh ekosistem.
Pengujian terintegrasi
Runner pengujian terintegrasi Bazel mengetahui dan hanya menjalankan pengujian yang perlu dijalankan ulang, menggunakan eksekusi jarak jauh (jika tersedia) untuk menjalankannya secara paralel. Deteksi flake lebih awal dengan menggunakan eksekusi jarak jauh untuk menjalankan pengujian ribuan kali dengan cepat.
Bazel menyediakan fasilitas untuk mengupload hasil pengujian ke lokasi pusat, sehingga memfasilitasi komunikasi hasil pengujian yang efisien, baik di CI maupun oleh developer individual.
Dukungan multibahasa
Bazel mendukung banyak bahasa pemrograman umum, termasuk C++, Java, Kotlin, Python, Go, dan Rust. Anda dapat membuat beberapa biner (misalnya, backend, UI web, dan aplikasi seluler) dalam pemanggilan Bazel yang sama tanpa dibatasi oleh alat build idiomatis satu bahasa.
Dukungan multi-repositori
Bazel dapat mengumpulkan kode sumber dari beberapa lokasi: Anda tidak perlu menyediakan dependensi (tetapi Anda bisa!), Anda dapat mengarahkan Bazel ke lokasi kode sumber atau artefak yang telah dibuat sebelumnya (misalnya, repositori git atau Maven Central), dan Bazel akan menangani sisanya.
Dukungan multi-platform
Bazel dapat membuat project secara bersamaan untuk beberapa platform, termasuk Linux, macOS, Windows, dan Android. Bazel juga menyediakan kemampuan kompilasi silang yang canggih untuk membuat kode untuk satu platform saat menjalankan build di platform lain.
Ekosistem yang luas
Para pemimpin industri menyukai Bazel, membangun komunitas besar developer yang menggunakan dan berkontribusi pada Bazel. Temukan alat, layanan, dan dokumentasi, termasuk penawaran konsultasi dan SaaS yang dapat digunakan Bazel. Jelajahi ekstensi seperti dukungan untuk bahasa pemrograman di repositori software open source kami.