Bazel 2.0 құрастыру жүйесінің шығарылымы

Қол жетімді ашық құрастыру құралдарын шығару Bazel 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».

Базелдің айрықша белгілерінің арасында құрастыру процесінің жоғары жылдамдығы, сенімділігі және қайталануы болып табылады. Құрастырудың жоғары жылдамдығына қол жеткізу үшін Базел құрастыру процесінде кэштеу және параллельдеу әдістерін белсенді түрде қолданады. BUILD файлдары барлық тәуелділіктерді толық анықтауы керек, олардың негізінде өзгерістер енгізілгеннен кейін (тек өзгертілген файлдар қайта құрылады) құрамдастарды қайта құру туралы шешімдер қабылданады және құрастыру процесін параллельді етеді. Құрал-саймандар қайталанатын құрастыруды қамтамасыз етеді, яғни. әзірлеушінің машинасында жобаны құру нәтижесі үздіксіз интеграция серверлері сияқты үшінші тарап жүйелеріндегі құрастырумен толығымен бірдей болады.

Make және Ninja-дан айырмашылығы, Bazel құрастыру ережелерін құруға жоғары деңгейлі тәсілді пайдаланады, онда пәрмендердің құрастырылып жатқан файлдарға байланыстыруын анықтаудың орнына, «орындалатын файлды құру» сияқты абстрактілі дайын блоктар пайдаланылады. C++», «C++ тілінде кітапхана құру» немесе «C++ үшін сынақ жүргізу», сонымен қатар мақсатты және құрастыру платформаларын анықтау. BUILD мәтіндік файлында жоба құрамдастары жеке файлдар деңгейінде және компиляторды шақыру пәрмендерінде егжей-тегжейлі айтылмай, кітапханалар, орындалатын файлдар және сынақтар жиынтығы ретінде сипатталады. Қосымша функционалдылық кеңейтімдерді қосу механизмі арқылы жүзеге асырылады.

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

Ақпарат көзі: opennet.ru

пікір қалдыру