Mengapa Bazel?

Laporkan masalah Lihat sumber Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Bazel adalah alat build yang cepat, benar, 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 diperlukan setiap perintah build, sehingga menghindari pekerjaan yang tidak perlu dengan menjalankan ulang hanya jika kumpulan file input telah berubah di antara setiap build. Alat ini menjalankan perintah build dengan keparalelan sebanyak mungkin, baik dalam komputer yang sama maupun di node build jarak jauh. Jika struktur build memungkinkannya, build dapat menjalankan ribuan perintah build atau pengujian secara bersamaan.

Hal ini didukung oleh beberapa lapisan penyimpanan dalam cache, 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 hanya dibuat dari kode sumber Anda sendiri. Tindakan Bazel berjalan di setiap sandbox dan Bazel melacak setiap file input build, hanya dan selalu menjalankan ulang perintah build jika diperlukan. Hal ini akan membuat biner Anda selalu yang terbaru sehingga kode sumber yang sama selalu menghasilkan biner yang sama, bit demi bit.

Ucapkan selamat tinggal pada pemanggilan make clean yang tak ada habisnya dan untuk mengejar bug phantom yang sebenarnya telah di-resolve dalam kode sumber yang tidak pernah di-build.

Bazel dapat diperluas

Manfaatkan kekuatan penuh Bazel 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 dari 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 hanya mengetahui dan menjalankan pengujian yang perlu dijalankan ulang, menggunakan eksekusi jarak jauh (jika tersedia) untuk menjalankannya secara paralel. Deteksi error 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 setiap developer.

Dukungan multibahasa

Bazel mendukung banyak bahasa pemrograman umum, termasuk C++, Java, Kotlin, Python, Go, dan Rust. Anda dapat mem-build beberapa biner (misalnya, backend, UI web, dan aplikasi seluler) dalam pemanggilan Bazel yang sama tanpa dibatasi pada satu alat build idiomatis bahasa.

Dukungan multi-repositori

Bazel dapat mengumpulkan kode sumber dari beberapa lokasi: Anda tidak perlu mem-vendor dependensi (tetapi Anda dapat melakukannya), sebagai gantinya, Anda dapat mengarahkan Bazel ke lokasi kode sumber atau artefak bawaan (misalnya, repositori git atau Maven Central), dan Bazel akan menangani sisanya.

Dukungan multiplatform

Bazel dapat mem-build project secara bersamaan untuk beberapa platform, termasuk Linux, macOS, Windows, dan Android. Alat ini juga menyediakan kemampuan kompilasi silang yang canggih untuk mem-build kode untuk satu platform saat menjalankan build di platform lain.

Ekosistem yang luas

Pemimpin industri menyukai Bazel, sehingga membangun komunitas developer yang besar yang menggunakan dan berkontribusi pada Bazel. Temukan alat, layanan, dan dokumentasi, termasuk penawaran konsultasi dan SaaS yang dapat digunakan oleh Bazel. Jelajahi ekstensi seperti dukungan untuk bahasa pemrograman di repositori software open source kami.