Rilis sistem perakitan Bazel 2.0

Tersedia pelepasan alat perakitan terbuka Bazel 2.0, dikembangkan oleh para insinyur dari Google dan digunakan untuk merakit sebagian besar proyek internal perusahaan. Bazel membangun proyek dengan menjalankan kompiler dan pengujian yang diperlukan. Ini mendukung pembuatan dan pengujian kode dalam Java, C++, Objective-C, Python, Rust, Go dan banyak bahasa lainnya, serta membangun aplikasi seluler untuk Android dan iOS. Kode proyek didistribusikan oleh berlisensi di bawah Apache 2.0.

Perubahan versi yang signifikan melibatkan penambahan perubahan yang merusak kompatibilitas. Dimulai dengan Bazel 2.0, mode berikut diaktifkan secara default: “—inkompatibel_remap_main_repo” (tautan berdasarkan nama dan melalui @ sekarang tautan ke repositori yang sama), “—inkompatibel_disallow_dict_lookup”_(penggunaan kunci yang tidak dapat di-hash),
"--inkompatibel_remove_native_maven_jar" dan "--inkompatibel_prohibit_aapt1". Perubahan lainnya meliputi:

  • Dalam tim akuarium dukungan eksperimental telah muncul untuk edisi baru format keluaran “proto” (-output=proto), yang saat ini dinonaktifkan secara default (-inkompatibel_proto_output_v2) dan menyediakan presentasi data yang lebih ringkas;
  • Menambahkan tanda "--incompatibel_remove_enabled_toolchain_types" untuk menghapus bidang PlatformConfiguration.enabled_toolchain_types;
  • Menambahkan perlindungan terhadap pemuatan paket yang menggunakan tautan simbolik siklik saat memuat jalur saat memperluasnya;
  • Menerapkan kemampuan untuk menggunakan tanda “--disk_cache” dengan cache gRPC eksternal;
  • Paket Debian dan penginstal biner menyertakan lapisan yang ditingkatkan yang menangani file ~/.bazelversion dan variabel lingkungan $USE_BAZEL_VERSION;
  • Sebagai persiapan untuk penghentian file manifes runfiles, tanda "--experimental_skip_runfiles_manifests" telah ditambahkan.

Di antara ciri khas Bazel adalah kecepatan tinggi, keandalan, dan pengulangan proses perakitan. Untuk mencapai kecepatan build yang tinggi, Bazel secara aktif menggunakan teknik caching dan paralelisasi untuk proses build. File BUILD harus sepenuhnya mendefinisikan semua dependensi, berdasarkan keputusan yang dibuat untuk membangun kembali komponen setelah perubahan dilakukan (hanya file yang diubah yang dibangun kembali) dan memparalelkan proses perakitan. Perkakas juga memastikan perakitan berulang, mis. hasil pembangunan proyek di mesin pengembang akan sepenuhnya identik dengan pembangunan di sistem pihak ketiga, seperti server integrasi berkelanjutan.

Tidak seperti Make dan Ninja, Bazel menggunakan pendekatan tingkat yang lebih tinggi untuk membuat aturan perakitan, di mana, alih-alih menentukan pengikatan perintah ke file yang sedang dibuat, blok siap pakai yang lebih abstrak digunakan, seperti “membuat file yang dapat dieksekusi di C++”, “membangun perpustakaan di C++" atau "menjalankan pengujian untuk C++", serta mengidentifikasi target dan membangun platform. Dalam file teks BUILD, komponen proyek digambarkan sebagai sekumpulan perpustakaan, file yang dapat dieksekusi, dan pengujian, tanpa merinci pada tingkat file individual dan perintah panggilan kompiler. Fungsionalitas tambahan diimplementasikan melalui mekanisme untuk menghubungkan ekstensi.

Penggunaan file rakitan tunggal untuk platform dan arsitektur berbeda didukung; misalnya, satu file rakitan tanpa perubahan dapat digunakan untuk sistem server dan perangkat seluler. Sistem pembangunan dirancang dari awal untuk membangun proyek Google secara optimal, termasuk proyek yang sangat besar dan proyek yang berisi kode dalam berbagai bahasa pemrograman, memerlukan pengujian ekstensif, dan dibuat untuk berbagai platform.

Sumber: opennet.ru

Tambah komentar