Bazel 2.0 būvēšanas sistēmas izlaišana

Pieejams atvērto montāžas instrumentu atbrīvošana Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта izplata licencēts saskaņā ar 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».

Starp Bazel raksturīgajām iezīmēm ir lielais ātrums, uzticamība un montāžas procesa atkārtojamība. Lai sasniegtu lielu veidošanas ātrumu, Bazel aktīvi izmanto kešatmiņas un paralēlizācijas metodes veidošanas procesā. BUILD failiem ir pilnībā jādefinē visas atkarības, pamatojoties uz kurām tiek pieņemti lēmumi par komponentu atjaunošanu pēc izmaiņu veikšanas (tiek pārbūvēti tikai mainītie faili) un paralēli montāžas procesam. Instrumenti nodrošina arī atkārtojamu montāžu, t.i. projekta izveides rezultāts izstrādātāja datorā būs pilnīgi identisks tam, ko veido trešās puses sistēmas, piemēram, nepārtrauktas integrācijas serveri.

Atšķirībā no Make un Ninja, Bazel izmanto augstāka līmeņa pieeju montāžas noteikumu veidošanai, kurā tā vietā, lai definētu komandu saistīšanu ar veidotajiem failiem, tiek izmantoti abstraktāki gatavie bloki, piemēram, “izveidojot izpildāmo failu C++”, “bibliotēkas izveide C++ valodā” vai “C++ testēšanas palaišana”, kā arī mērķa un veidošanas platformu identificēšana. Teksta failā BUILD projekta komponenti ir aprakstīti kā bibliotēku, izpildāmo failu un testu kopums, neprecizējot atsevišķu failu un kompilatoru izsaukuma komandu līmenī. Papildu funkcionalitāte tiek īstenota, izmantojot paplašinājumu savienošanas mehānismu.

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

Avots: opennet.ru

Pievieno komentāru