Pengantar Bazel

Laporkan masalah Lihat sumber

Bazel adalah alat build dan pengujian open source yang mirip dengan Make, Maven, dan Gradle. Kode ini menggunakan bahasa build tingkat tinggi yang dapat dibaca manusia. Bazel mendukung project dalam beberapa bahasa dan mem-build output untuk beberapa platform. Bazel mendukung codebase besar di beberapa repositori, dan sejumlah besar pengguna.

Manfaat

Bazel menawarkan keuntungan berikut:

  • Bahasa build tingkat tinggi. Bazel menggunakan bahasa yang abstrak dan dapat dibaca oleh pengguna untuk mendeskripsikan properti build project Anda di tingkat semantik yang tinggi. Tidak seperti alat lainnya, Bazel beroperasi pada konsep library, biner, skrip, dan set data, yang melindungi Anda dari kompleksitas penulisan panggilan individual ke alat seperti compiler dan linker.

  • Bazel dapat digunakan dengan cepat dan andal. Bazel menyimpan semua pekerjaan yang telah dilakukan sebelumnya ke dalam cache dan melacak perubahan pada konten file dan perintah build. Dengan cara ini, Bazel mengetahui kapan sesuatu perlu dibuat ulang, dan hanya membangun ulang hal itu. Untuk semakin mempercepat build, Anda dapat menyiapkan project agar dibuat secara sangat paralel dan inkremental.

  • Bazel adalah platform multi-platform. Bazel berjalan di Linux, macOS, dan Windows. Bazel dapat membuat biner dan paket yang dapat di-deploy untuk beberapa platform, termasuk desktop, server, dan seluler, dari project yang sama.

  • Skala Bazel. Bazel mempertahankan fleksibilitas saat menangani build dengan lebih dari 100 ribu file sumber. Fitur ini berfungsi dengan beberapa repositori dan basis pengguna di puluhan ribuan.

  • Bazel dapat diperluas. Banyak bahasa yang didukung, dan Anda dapat memperluas Bazel untuk mendukung bahasa atau framework lainnya.

Menggunakan Bazel

Untuk mem-build atau menguji project dengan Bazel, biasanya Anda melakukan hal berikut:

  1. Siapkan Bazel. Download dan instal Bazel.

  2. Siapkan ruang kerja project, yang merupakan direktori tempat Bazel mencari input build dan file BUILD, serta tempat menyimpan output build.

  3. Tulis file BUILD, yang memberi tahu Bazel apa yang harus di-build dan cara mem-build-nya.

    Anda menulis file BUILD dengan mendeklarasikan target build menggunakan Starlark, bahasa khusus domain. (Lihat contoh di sini.)

    Target build menentukan sekumpulan artefak input yang akan di-build oleh Bazel ditambah dependensinya, aturan build yang akan digunakan Bazel untuk mem-build-nya, dan opsi yang mengonfigurasi aturan build.

    Aturan build menentukan alat build yang akan digunakan Bazel, seperti compiler dan linker, serta konfigurasinya. Bazel dikirimkan dengan sejumlah aturan build yang mencakup jenis artefak paling umum dalam bahasa yang didukung di platform yang didukung.

  4. Jalankan Bazel dari command line. Bazel menempatkan output dalam ruang kerja.

Selain mem-build, Anda juga dapat menggunakan Bazel untuk menjalankan pengujian dan membuat kueri build untuk melacak dependensi dalam kode Anda.

Proses build Bazel

Saat menjalankan build atau pengujian, Bazel melakukan hal berikut:

  1. Memuat file BUILD yang relevan dengan target.

  2. Menganalisis input dan dependensinya, menerapkan aturan build yang ditentukan, dan menghasilkan grafik tindakan.

  3. Mengeksekusi tindakan build pada input hingga output build final dihasilkan.

Karena semua pekerjaan build sebelumnya di-cache, Bazel dapat mengidentifikasi dan menggunakan kembali artefak yang di-cache dan hanya mem-build ulang atau menguji ulang apa yang berubah. Untuk lebih menerapkan ketepatan, Anda dapat menyiapkan Bazel untuk menjalankan build dan pengujian secara hetikal melalui sandbox, meminimalkan kemiringan dan memaksimalkan reproduksibilitas.

Grafik tindakan

Grafik tindakan merepresentasikan artefak build dan hubungannya dengan build, serta tindakan build yang akan dilakukan Bazel. Berkat grafik ini, Bazel dapat melacak perubahan konten file serta perubahan pada tindakan, seperti perintah build atau pengujian, dan mengetahui pekerjaan build yang telah dilakukan sebelumnya. Grafik juga memungkinkan Anda melacak dependensi dengan mudah dalam kode Anda.

Tutorial memulai

Untuk memulai Bazel, lihat Memulai atau langsung buka tutorial Bazel: