การเปิดตัวระบบบิลด์ Bazel 2.0

มีอยู่ การเปิดตัวเครื่องมือประกอบแบบเปิด บาเซล 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта จัดจำหน่ายโดย ได้รับอนุญาตภายใต้ Apache 2.0

Значительное изменение версии связано с добавлением изменений, нарушающих обратную совместимость. Начиная с Bazel 2.0 включены по умолчанию режимы «—incompatible_remap_main_repo» (ссылки по имени и через @ теперь ссылаются на один репозиторий), «—incompatible_disallow_dict_lookup»_(применение нехешируемых ключей),
«—incompatible_remove_native_maven_jar» и «—incompatible_prohibit_aapt1». Среди других изменений:

  • อยู่ในทีม aquery появилась экспериментальная поддержка новой редауции формата вывода «proto» (—output=proto), которая пока отключена по умолчанию (—incompatible_proto_output_v2) и обеспечивает более компактное представление данных;
  • Добавлен флаг «—incompatible_remove_enabled_toolchain_types», позволяющий удалить поле PlatformConfiguration.enabled_toolchain_types;
  • Добавлена защита от загрузки пакетов, при загрузке которых при раскрытии путей используются цикличные символические ссылки;
  • Реализована возможность использования флага «—disk_cache» с внешними кэшами gRPC;
  • В пакет для Debian и бинарный инсталлятор включена улучшенная прослойка, обрабатывающая файлы ~/.bazelversion и переменную окружения $USE_BAZEL_VERSION;
  • В рамках подготовки к переводу файлов с манифестом runfiles в категорию устаревших возможностей добавлен флаг «—experimental_skip_runfiles_manifests».

คุณสมบัติที่โดดเด่นของ Bazel ได้แก่ ความเร็วสูง ความน่าเชื่อถือ และความสามารถในการทำซ้ำของกระบวนการประกอบ เพื่อให้บรรลุถึงความเร็วในการสร้างที่สูง Bazel จึงใช้เทคนิคการแคชและการขนานสำหรับกระบวนการสร้าง ไฟล์ BUILD จะต้องกำหนดการขึ้นต่อกันทั้งหมดโดยสมบูรณ์ โดยขึ้นอยู่กับการตัดสินใจในการสร้างส่วนประกอบใหม่หลังจากทำการเปลี่ยนแปลง (เฉพาะไฟล์ที่เปลี่ยนแปลงเท่านั้นที่ถูกสร้างขึ้นใหม่) และทำให้กระบวนการประกอบเป็นแบบขนาน การใช้เครื่องมือยังช่วยให้มั่นใจได้ว่าการประกอบซ้ำได้ เช่น ผลลัพธ์ของการสร้างโปรเจ็กต์บนเครื่องของนักพัฒนาจะเหมือนกับการสร้างบนระบบของบุคคลที่สามโดยสมบูรณ์ เช่น เซิร์ฟเวอร์การรวมอย่างต่อเนื่อง

ต่างจาก Make และ Ninja ตรงที่ Bazel ใช้วิธีการระดับสูงกว่าในการสร้างกฎการประกอบ ซึ่งแทนที่จะกำหนดการเชื่อมโยงคำสั่งกับไฟล์ที่ถูกสร้างขึ้น กลับใช้บล็อกสำเร็จรูปที่เป็นนามธรรมมากขึ้น เช่น "การสร้างไฟล์ปฏิบัติการใน C++”, “การสร้างไลบรารีด้วย C++” หรือ “การรันการทดสอบสำหรับ C++” รวมถึงการระบุเป้าหมายและสร้างแพลตฟอร์ม ในไฟล์ข้อความ BUILD ส่วนประกอบของโปรเจ็กต์ถูกอธิบายว่าเป็นกลุ่มของไลบรารี ไฟล์ปฏิบัติการ และการทดสอบ โดยไม่มีรายละเอียดในระดับของแต่ละไฟล์และคำสั่งการเรียกคอมไพเลอร์ มีการนำฟังก์ชันเพิ่มเติมไปใช้ผ่านกลไกในการเชื่อมต่อส่วนขยาย

Поддерживается использование единых сборочных файлов для разных платформ и архитектур, например, один файл сборки без изменений может применяться как для серверной системы, так и для мобильного устройства. Сборочная система изначально спроектирована для оптимальной сборки проектов Google, в том числе сборки очень больших проектов и проектов, содержащих код на нескольких языках программирования, требующих расширенного тестирования и собираемых для нескольких платформ.

ที่มา: opennet.ru

เพิ่มความคิดเห็น