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

코멘트를 추가