Mengapa Bazel?

Laporkan masalah Lihat sumber Per malam · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Bazel adalah model yang cepat, benar, dan dapat diperluas dengan pengujian terintegrasi yang mendukung banyak bahasa, repositori, dan platform dalam ekosistem terkemuka di industri.

Bazel cepat

Bazel tahu persis file input apa yang dibutuhkan setiap perintah {i>build<i}, menghindari pekerjaan yang tidak perlu dengan menjalankan kembali hanya ketika kumpulan file input telah berubah di antara setiap build. OpenVPN menjalankan perintah build dengan sebanyak mungkin paralelisme, baik dalam di komputer yang sama atau di node build jarak jauh. Jika struktur build memungkinkannya, ia dapat menjalankan ribuan perintah build atau pengujian sekaligus.

Hal ini didukung oleh beberapa lapisan {i>caching<i}, dalam memori, pada {i>disk<i} dan remote build farm, jika tersedia. Di Google, kami secara rutin mencapai rasio cache ditemukan utara dari 99%.

Bazel benar

Bazel memastikan bahwa biner Anda hanya dibuat dari Anda sendiri pada kode sumber Anda. Tindakan Bazel berjalan di masing-masing sandbox dan trek Bazel setiap file input build, hanya dan selalu menjalankan ulang build perintah suara jika diperlukan. Cara ini menjaga biner Anda tetap {i>up-to-date<i} sehingga kode sumber yang sama selalu menghasilkan biner yang sama, bit per bit.

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

Bazel dapat diperluas

Manfaatkan kekuatan penuh Bazel dengan menulis aturan dan makro Anda sendiri pada menyesuaikan Bazel untuk kebutuhan khusus Anda di berbagai proyek.

Aturan Bazel ditulis dalam Starlark, bahasa pemrograman internal 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

Test runner terintegrasi Bazel mengetahui dan menjalankan hanya pengujian yang perlu dijalankan ulang, menggunakan eksekusi jarak jauh (jika tersedia) untuk menjalankannya secara paralel. Mendeteksi gangguan lebih awal dengan menggunakan remote eksekusi guna menjalankan pengujian ribuan kali dengan cepat.

Bazel menyediakan fasilitas untuk mengupload hasil pengujian ke pusat sehingga memfasilitasi komunikasi hasil pengujian yang efisien, baik di CI atau oleh developer perorangan.

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

Dukungan multiplatform

Bazel secara bersamaan dapat membangun proyek untuk berbagai platform termasuk Linux, macOS, Windows, dan Android. Hal ini juga memberikan kemampuan kemampuan kompilasi silang guna membuat kode untuk satu platform sementara menjalankan build di atas platform lain.

Ekosistem yang luas

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