Mengapa Bazel?

Bazel adalah alat build yang cepat, benar, dan dapat di-extend dengan pengujian terintegrasi yang mendukung beberapa bahasa, repositori, dan platform dalam ekosistem yang terkemuka di industri.

Bazel berjalan cepat

Bazel mengetahui dengan tepat file input apa yang diperlukan setiap perintah build, sehingga menghindari pekerjaan yang tidak perlu dengan menjalankan ulang hanya jika kumpulan file input telah berubah di antara setiap build. Build ini menjalankan perintah build dengan paralelisme sebanyak mungkin, baik di dalam komputer yang sama maupun di node build jarak jauh. Jika struktur build memungkinkan, build ini dapat menjalankan ribuan perintah build atau pengujian secara bersamaan.

Hal ini didukung oleh beberapa lapisan caching, di memori, di disk, dan di farm build jarak jauh, jika tersedia. Di Google, kami secara rutin mencapai rasio hit cache di atas 99%.

Bazel sudah benar

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 kembali perintah build saat diperlukan. Tindakan ini akan menjaga agar biner Anda tetap terbaru sehingga kode sumber yang sama akan selalu menghasilkan biner yang sama, bit demi bit.

Ucapkan selamat tinggal pada pemanggilan make clean yang tak berujung dan pada pengejaran bug hantu yang sebenarnya telah diselesaikan dalam kode sumber yang tidak pernah di-build.

Bazel dapat diperluas

Manfaatkan kecanggihan Bazel sepenuhnya dengan menulis aturan dan makro Anda sendiri untuk menyesuaikan Bazel dengan 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

Peluncur pengujian terintegrasi Bazel hanya mengetahui dan menjalankan pengujian yang perlu dijalankan ulang, menggunakan eksekusi jarak jauh (jika tersedia) untuk menjalankannya secara paralel. Deteksi kegagalan 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 yang efisien terkait hasil pengujian, baik di CI maupun oleh masing-masing developer.

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 pada 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 di-build sebelumnya (misalnya, repositori git atau Maven Central), dan Bazel akan menangani sisanya.

Dukungan multiplatform

Bazel dapat membangun project secara bersamaan untuk beberapa platform, termasuk Linux, macOS, Windows, dan Android. Layanan ini juga menyediakan kemampuan kompilasi silang yang canggih untuk membuat kode bagi satu platform sambil menjalankan build di platform lain.

Ekosistem yang luas

Pemimpin industri menyukai Bazel, yang 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.