Tips praktis flag Bazel

Laporkan masalah Lihat sumber Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Membuka daftar lengkap flag command line Bazel bisa menjadi tantangan. Halaman ini berfokus pada tanda yang paling penting yang perlu Anda ketahui.

Opsi umum yang berguna

Flag berikut dimaksudkan untuk ditetapkan secara eksplisit di command line.

Bendera Deskripsi

--config

Anda dapat mengatur flag dalam file .bazelrc ke dalam konfigurasi, seperti untuk build rilis atau proses debug. Grup konfigurasi tambahan dapat dipilih dengan --config=<group>.

--keep_going

Bazel harus mencoba sebanyak mungkin untuk melanjutkan eksekusi build dan pengujian. Secara default, Bazel akan langsung gagal.

--remote_download_outputs

Saat menggunakan eksekusi atau caching jarak jauh (disk dan jarak jauh), Anda dapat memberi sinyal ke Bazel bahwa Anda ingin mendownload semua artefak build (perantara) sebagai berikut:
--remote_download_outputs=all
Secara default, Bazel hanya mendownload artefak tingkat teratas, seperti biner akhir, dan artefak perantara yang diperlukan untuk tindakan lokal.

--stamp

Menambahkan info build (pengguna, stempel waktu) ke biner.

Mengungkap Masalah Build & Pengujian

Flag berikut dapat membantu Anda lebih memahami error build atau pengujian Bazel.

Bendera Deskripsi

--announce_rc

Menampilkan flag mana yang ditetapkan secara implisit melalui file .bazelrc yang ditentukan pengguna, ditentukan mesin, atau ditentukan project.

--auto_output_filter

Secara default, Bazel mencoba mencegah spam log dan hanya mencetak peringatan kompiler dan output debug Starlark untuk paket dan subpaket yang diminta di command line. Untuk menonaktifkan semua pemfilteran, tetapkan --auto_output_filter=none.

--sandbox_debug

Memungkinkan Anda melihat perincian error sandbox. Untuk mengetahui detail tentang alasan Bazel melakukan sandbox pada build secara default dan apa yang di-sandbox, lihat dokumentasi sandbox kami.

--subcommands (-s)

Menampilkan daftar lengkap setiap perintah yang dijalankan Bazel selama build, terlepas dari apakah berhasil atau gagal

Startup

Bendera Deskripsi

--bazelrc

Anda dapat menentukan opsi Bazel default dalam file .bazelrc. Jika ada beberapa file .bazelrc, Anda dapat memilih file .bazelrc yang akan digunakan dengan menambahkan --bazelrc=<path to the .bazelrc file>.

--host_jvm_args

Membatasi jumlah RAM yang digunakan server Bazel. Misalnya, berikut ini membatasi ukuran heap Bazel menjadi 3 GB:
--host_jvm_args=-Xmx3g

--output_base

Mengontrol struktur output Bazel. Bazel tidak menyimpan output build, termasuk log, dalam hierarki sumber itu sendiri. Sebagai gantinya, ia menggunakan pohon output yang berbeda untuk tujuan ini.

Pengujian Bazel

Flag berikut terkait dengan pengujian Bazel

Bendera Deskripsi

--java_debug

Menyebabkan pengujian Java menunggu koneksi debugger sebelum dieksekusi.

--runs_per_test

Jumlah pengujian yang akan dijalankan. Misalnya, untuk menjalankan pengujian N kali, tambahkan --runs_per_test=N. Hal ini dapat berguna untuk melakukan proses debug pada pengujian yang tidak stabil dan melihat apakah perbaikan menyebabkan pengujian lulus secara konsisten.

--test_output

Menentukan mode output. Secara default, Bazel merekam output pengujian dalam file log lokal. Saat melakukan iterasi pada pengujian yang gagal, biasanya Anda ingin menggunakan --test_output=streamed untuk melihat output pengujian secara real time.

Jalankan Bazel

Flag berikut terkait dengan eksekusi Bazel.

Bendera Deskripsi

--run_under

Mengubah cara pemanggilan file yang dapat dieksekusi. Misalnya, --run_under="strace -c" sering digunakan untuk proses debug.

Opsi bazelrc khusus pengguna

Flag berikut terkait dengan opsi .bazelrc khusus pengguna.

Bendera Deskripsi

--disk_cache

Jalur ke direktori tempat Bazel dapat membaca dan menulis tindakan serta output tindakan. Jika belum ada, direktori akan dibuat. Anda dapat membagikan artefak build di antara beberapa cabang atau ruang kerja dan mempercepat build Bazel dengan menambahkan --disk_cache=<path> ke perintah Anda.

--jobs

Jumlah tugas serentak yang akan dijalankan. Hal ini biasanya hanya diperlukan saat menggunakan eksekusi jarak jauh di mana cluster build jarak jauh menjalankan lebih banyak tugas daripada yang Anda miliki secara lokal.

--local_resources

Membatasi jumlah CPU atau RAM yang digunakan oleh tindakan yang berjalan secara lokal.

--sandbox_base

Memungkinkan sandbox membuat direktori sandbox-nya di bawah jalur ini. Secara default, Bazel menjalankan tindakan lokal yang di-sandbox, yang menambahkan beberapa overhead pada build.

Opsi bazelrc khusus project

Flag berikut terkait dengan opsi .bazelrc khusus project.

Bendera Deskripsi

--flaky_test_attempts

Coba lagi setiap pengujian hingga jumlah percobaan yang ditentukan jika terjadi kegagalan pengujian. Hal ini sangat berguna pada Integrasi Berkelanjutan. Pengujian yang memerlukan lebih dari satu upaya untuk lulus ditandai sebagai TIDAK STABIL dalam ringkasan pengujian.

--remote_cache

URI endpoint caching. Menyiapkan caching jarak jauh dapat menjadi cara yang bagus untuk mempercepat build Bazel. Cache disk lokal dapat digabungkan dengan cache disk lokal.

--remote_download_regex

Memaksa output build jarak jauh yang jalur filenya cocok dengan pola ini untuk didownload, terlepas dari setelan --remote_download_outputs. Beberapa pola dapat ditentukan dengan mengulangi tanda ini.

--remote_executor

HOST atau HOST:PORT dari endpoint eksekusi jarak jauh. Teruskan ini jika Anda menggunakan layanan eksekusi jarak jauh. Anda sering kali perlu Menambahkan --remote_instance_name=<name>.

--remote_instance_name

Nilai yang akan diteruskan sebagai instance_name di API eksekusi jarak jauh.

--show-timestamps

Jika ditentukan, stempel waktu akan ditambahkan ke setiap pesan yang dihasilkan oleh Bazel yang menentukan waktu pesan ditampilkan. Hal ini berguna pada sistem CI untuk memahami dengan cepat berapa lama waktu yang dibutuhkan setiap langkah.

--spawn_strategy

Meskipun dengan eksekusi jarak jauh, menjalankan beberapa tindakan build secara lokal mungkin lebih cepat. Hal ini bergantung pada faktor-faktor seperti kapasitas cluster build, kecepatan jaringan, dan penundaan jaringan.