Pengantar Bazel

Laporkan masalah Lihat sumber {/18/}{/1/}

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

Manfaat

Bazel menawarkan keunggulan berikut:

  • Bahasa build tingkat tinggi. Bazel menggunakan bahasa abstrak yang dapat dibaca manusia untuk mendeskripsikan properti build project Anda pada tingkat semantik yang tinggi. Tidak seperti alat lain, Bazel beroperasi berdasarkan konsep library, biner, skrip, dan set data, sehingga melindungi Anda dari kerumitan penulisan panggilan individual ke alat seperti compiler dan penaut.

  • Bazel adalah pelanggan yang cepat dan andal. Bazel menyimpan semua pekerjaan yang telah dilakukan sebelumnya dalam cache dan melacak perubahan pada konten file dan perintah build. Dengan cara ini, Bazel mengetahui kapan sesuatu perlu dibangun ulang, dan hanya membangun ulang hal itu. Untuk mempercepat build lebih lanjut, Anda dapat menyiapkan project untuk membangun secara paralel dan inkremental.

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

  • Timbangan Bazel. Bazel mempertahankan ketangkasan sekaligus menangani build dengan lebih dari 100 ribu file sumber. Solusi ini dapat digunakan dengan banyak repositori dan basis pengguna hingga puluhan ribu.

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

Menggunakan Bazel

Untuk membangun atau menguji project dengan Bazel, biasanya Anda melakukan hal berikut:

  1. Siapkan Bazel. Download dan instal Bazel.

  2. Menyiapkan workspace 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 dibuat Bazel beserta dependensinya, aturan build yang akan digunakan Bazel untuk membangunnya, dan opsi yang mengonfigurasi aturan build.

    Aturan build menentukan alat build yang akan digunakan Bazel, seperti compiler dan penaut, serta konfigurasinya. Bazel mengirimkan sejumlah aturan build yang mencakup jenis artefak paling umum dalam bahasa yang didukung pada platform yang didukung.

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

Selain mem-build, Anda juga dapat menggunakan Bazel untuk menjalankan pengujian dan mengkueri 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 akhir menghasilkan.

Karena semua tugas build sebelumnya di-cache, Bazel dapat mengidentifikasi dan menggunakan kembali artefak yang di-cache serta hanya membangun ulang atau menguji ulang apa yang telah berubah. Untuk menerapkan ketepatan lebih lanjut, Anda dapat menyiapkan Bazel untuk menjalankan build dan pengujian secara hermetik melalui sandbox, meminimalkan kemiringan, dan memaksimalkan reproduksi.

Grafik tindakan

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

Tutorial memulai

Untuk mulai menggunakan Bazel, lihat Memulai atau langsung lompat ke tutorial Bazel: