LINUX.ORG.RU

Google открыла внутреннюю систему сборки — Bazel

 , , ,


4

4

Основные возможности

  • Поддержка разных языков программирования: Bazel поддерживает Java, Objective-C и C++, а также может быть расширен для поддержки других языков.
  • Высокоуровневый язык конфигурирования сборки: проекты конфигурируются с помощью языка BUILD-файлов, в компактном текстовом формате, который описывает проекты как наборы небольших, взаимосвязанных библиотек, исполняемых файлов и тестов. В отличии от Bazel, Makefile, например, содержат описания конкретных файлов и параметров запуска компилятора.
  • Поддержка множества платформ: один и тот же инструмент используется для сборки ПО для различных архитектур и даже разных платформ. Google использует Bazel для сборки как серверного ПО, так и клиентских приложений на мобильных телефонах.
  • Воспроизводимость результатов: в BUILD файлах каждая библиотека, тест или исполняемый файл прямо указывают свои непосредственные зависимости. Bazel использует эту информацию, чтобы определять, как пересобирать двоичные файлы и параллельно выполнять тесты. Это означает, что все сборки инкрементальны и приводят к одинаковым результатам.
  • Масштабируемость: Bazel легко справляется с большими сборками. В Google достаточно часто серверные приложения занимают 100k строк кода и сборки ветки без отличий от кода основного репозитория могут занимать около 200 мс.
  • Make, Ninja? Эти приложения дают доступ к очень низкоуровневому контролю над выполнением сборки, но пользователь обязан следить за малейшими нюансами и их обеспечивать их правильность. Пользователи взаимодействуют с Bazel на высоком уровне. Примерами правил являются «Javа-тест», «исполняемый файл C++», также существует понятие «целевая платформа». Эти правила показали себя очень удобными на практике и легкими в использовании.
  • Ant и Maven? Ant и Maven в основном используются для Java, в то время как Bazel поддерживает множество языков. Bazel поощряет разделение кодовой базы на мелкие и легко используемые модули и может пересобирать только те модули, которые нуждаются в сборке. Это значительно увеличивает скорость разработки.
  • Gradle? Конфигурационные файлы Bazel значительно более структурированы, позволяя Bazel делать исключительно то, что описывается в тех правилах, которые он поддерживает. Это улучшает параллелизм и повторяемость результатов сборки.
  • Buck, Pants? Обе эти системы сборки были созданы бывшими сотрудниками Google, работающими в Twitter и Facebook. Они были основаны на Bazel, но их функциональность так и не смогла сравниться с оригиналом, потому они никогда не стали возможными альтернативами для самой Google.

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

Пример BUILD-файла, который на самом деле является скриптом на Python.

cc_library(
    name = "sign-in",
    srcs = ["sign_in.cc"],
    hdrs = ["sign_in.h"],
    deps = ["//external:openssl"],
)

java_binary(
    name = "java-tool",
    srcs = [
        "RunTool.java",
    ],
)

>>> Подробности

★★★★★

Проверено: leave ()
Последнее исправление: leave (всего исправлений: 7)
Ответ на: комментарий от waker

О том и речь, bazel больше ынтырпрайзная система сборки и как замена более компактным cmake или ninja не всегда может рассматриваться.

Shadow1251
()
Ответ на: комментарий от waker

Я и не спорил :) Просто в описании сравнения с другими системами сборки выглядят как: «а вот гугл отлил серебряную пулю».

Shadow1251
()
Последнее исправление: Shadow1251 (всего исправлений: 1)
Ответ на: комментарий от Shadow1251

bazel больше ынтырпрайзная система сборки и как замена более компактным cmake

А чем cmake то так плох, что Google создал Bazel? Или тут та же история что и с Wayland/Mir, Upstart/Systemd - просто борьба за контроль над нишей, т.е. создали Bazel не потому что cmake плох или хоть в чём то уступает, а только потому что cmake не контролируется Google. Та же песня и с системой сборки от MSBuild от Microsoft, её как и Bazel ждёт судьба Mir.

anonymous
()
Ответ на: комментарий от anonymous

Это нормально, когда крупные компании пилят свои внутренние тулзы под свои нужды и специфику. Меня и cmake во всем устраивает, но я и билдфермы не использую пока что.

Shadow1251
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.