Phát hành hệ thống xây dựng Bazel 2.0

Có sẵn phát hành các công cụ lắp ráp mở Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта phân phối bởi được cấp phép theo Apache 2.0.

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

  • Trong một nhóm 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».

Trong số các tính năng đặc biệt của Bazel là tốc độ cao, độ tin cậy và khả năng lặp lại của quá trình lắp ráp. Để đạt được tốc độ xây dựng cao, Bazel tích cực sử dụng các kỹ thuật bộ nhớ đệm và song song hóa cho quá trình xây dựng. Các tệp BUILD phải xác định đầy đủ tất cả các phụ thuộc, trên cơ sở đó đưa ra quyết định xây dựng lại các thành phần sau khi thực hiện thay đổi (chỉ các tệp đã thay đổi mới được xây dựng lại) và song song hóa quá trình lắp ráp. Dụng cụ cũng đảm bảo việc lắp ráp có thể lặp lại, tức là kết quả của việc xây dựng dự án trên máy của nhà phát triển sẽ hoàn toàn giống với việc xây dựng trên hệ thống của bên thứ ba, chẳng hạn như máy chủ tích hợp liên tục.

Không giống như Make và Ninja, Bazel sử dụng cách tiếp cận cấp cao hơn để xây dựng các quy tắc lắp ráp, trong đó, thay vì xác định ràng buộc của các lệnh với các tệp đang được xây dựng, các khối tạo sẵn trừu tượng hơn được sử dụng, chẳng hạn như “xây dựng một tệp thực thi trong C++”, “xây dựng thư viện bằng C++” hoặc “chạy thử nghiệm C++”, cũng như xác định mục tiêu và nền tảng xây dựng. Trong tệp văn bản BUILD, các thành phần dự án được mô tả dưới dạng một loạt các thư viện, tệp thực thi và thử nghiệm mà không nêu chi tiết ở cấp độ tệp riêng lẻ và lệnh gọi trình biên dịch. Chức năng bổ sung được thực hiện thông qua cơ chế kết nối các tiện ích mở rộng.

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

Nguồn: opennet.ru

Thêm một lời nhận xét