Mengapa Bazel?

Laporkan masalah Lihat sumber

Bazel adalah alat build yang cepat, benar, dan dapat diperluas dengan pengujian terintegrasi yang mendukung berbagai bahasa, repositori, dan platform dalam ekosistem yang terdepan di industri.

Bazel yang cepat

Bazel tahu persis file input yang diperlukan setiap perintah build, sehingga menghindari pekerjaan yang tidak perlu dengan menjalankan kembali hanya saat kumpulan file input telah berubah di antara setiap build. Library ini menjalankan perintah build dengan paralelisme 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 cache, dalam memori, disk, dan di farm build jarak jauh, jika tersedia. Di Google, kami secara rutin mencapai rasio kecocokan cache di atas 99%.

Bazel benar

Bazel memastikan bahwa biner Anda hanya dibuat 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. Cara ini akan terus memperbarui biner Anda sehingga kode sumber yang sama selalu menghasilkan biner yang sama, bit demi bit.

Misalnya, Goodbyte untuk pemanggilan make clean tanpa akhir dan untuk mengejar bug palsu yang sebenarnya telah di-resolve dalam kode sumber yang tidak pernah di-build.

Bazel dapat diperluas

Manfaatkan potensi 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 Python. Starlark membuat penulisan aturan mudah 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 yang efisien untuk hasil pengujian, baik di CI atau oleh developer individu.

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 alat build idiomatis satu bahasa.

Dukungan multi-repositori

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

Dukungan multiplatform

Bazel dapat membuat project secara bersamaan untuk berbagai platform termasuk Linux, macOS, Windows, dan Android. Library ini juga memberikan kemampuan kompilasi silang yang canggih untuk membuat kode untuk satu platform saat menjalankan build di platform lain.

Ekosistem yang luas

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