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-ийн онцлог шинж чанаруудын дунд угсралтын үйл явцын өндөр хурд, найдвартай байдал, давтагдах чадвар орно. Барилгын өндөр хурдыг бий болгохын тулд Базел нь бүтээх процесст кэш хийх, параллелжуулах аргыг идэвхтэй ашигладаг. BUILD файлууд нь бүх хамаарлыг бүрэн тодорхойлох ёстой бөгөөд үүний үндсэн дээр өөрчлөлт хийсний дараа бүрэлдэхүүн хэсгүүдийг дахин бүтээх шийдвэр гаргадаг (зөвхөн өөрчилсөн файлуудыг дахин бүтээдэг), угсрах процессыг зэрэгцүүлдэг. Багаж хэрэгсэл нь мөн давтагдах угсралтыг баталгаажуулдаг, i.e. Хөгжүүлэгчийн машин дээр төсөл бүтээх үр дүн нь тасралтгүй интеграцийн серверүүд гэх мэт гуравдагч талын системүүд дээр бүтээгдсэнтэй бүрэн ижил байх болно.

Make and Ninja-аас ялгаатай нь Базел угсралтын дүрмийг бий болгохдоо дээд түвшний арга барилыг ашигладаг бөгөөд үүнд командуудыг барьж буй файлуудтай холбохыг тодорхойлохын оронд илүү хийсвэр бэлэн блокуудыг ашигладаг. C++”, “C++ хэл дээр номын сан байгуулах” эсвэл “C++-д зориулсан тест ажиллуулах”, түүнчлэн зорилтот болон бүтээх платформуудыг тодорхойлох. BUILD текст файлд төслийн бүрэлдэхүүн хэсгүүд нь тусдаа файлын түвшинд, хөрвүүлэгчийн дуудлагын командын түвшинд дэлгэрэнгүй мэдээлэлгүйгээр олон тооны номын сан, гүйцэтгэгдэх файлууд, тестүүд гэж тодорхойлогддог. Нэмэлт функцийг өргөтгөлүүдийг холбох механизмаар дамжуулан хэрэгжүүлдэг.

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

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх