Mengapa Bazel?

7/0.9/2.5. Lihat sumber Nightly {/3/}

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 pasti 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. Fitur ini menjalankan perintah build dengan sebanyak mungkin paralelisme, baik di dalam komputer yang sama atau di node build jarak jauh. Jika struktur build memungkinkannya, ia dapat menjalankan ribuan perintah build atau pengujian secara bersamaan.

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

Bazel benar

Bazel memastikan bahwa biner Anda hanya dibuat dari kode sumber Anda sendiri. Tindakan Bazel berjalan di masing-masing sandbox dan Bazel melacak setiap file input build, hanya dan selalu menjalankan kembali perintah build saat diperlukan. Tindakan ini akan menjaga biner Anda tetap terbaru, sehingga kode sumber yang sama selalu menghasilkan biner yang sama, bit demi bit.

Ucapkan goodbyte untuk pemanggilan make clean tanpa akhir dan untuk mengejar bug palsu yang sebenarnya diselesaikan dalam kode sumber yang tidak pernah dibangun.

Bazel dapat diperluas

Maksimalkan kemampuan Bazel dengan menulis aturan dan makro Anda sendiri untuk menyesuaikan Bazel dengan kebutuhan spesifik 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 mengetahui dan hanya menjalankan pengujian yang perlu dijalankan ulang, menggunakan eksekusi jarak jauh (jika tersedia) untuk menjalankannya secara paralel. Deteksi flakes lebih awal menggunakan eksekusi jarak jauh untuk menjalankan pengujian dengan cepat ribuan kali.

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 membangun 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 memasok dependensi (tetapi bisa saja), Anda dapat mengarahkan Bazel ke lokasi kode sumber atau artefak bawaan Anda (mis. repositori git atau Maven Central), dan selebihnya akan ditangani.

Dukungan multiplatform

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

Ekosistem yang luas

Pemimpin industri menyukai Bazel karena membangun komunitas besar developer 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.