From https://docs.bazel.build/versions/master/bazel-overview.html
Bazel — это инструмент для сборки и тестирования с открытым исходным кодом, похожий на Make, Maven и Gradle. Он использует понятный человеку высокоуровневый язык сборки. Bazel поддерживает проекты на разных языках и создаёт выходные данные для разных платформ. Bazel подходит для больших кодовых баз в нескольких репозиториях и большого количества пользователей.
RabbitMQ с включёнными плагинами Tier1 — это большая кодовая база. Опыт разработчика выигрывает от быстрой инкрементальной компиляции.
Что ещё более важно, набор тестов RabbitMQ большой и занимает часы, если выполняется на одном компьютере. Bazel позволяет при необходимости запускать тесты параллельно на большом количестве удалённых рабочих станций и, кроме того, использует кэшированные результаты тестов, когда ветви кодовой базы остаются неизменными.
Bazel не предоставляет встроенной поддержки Erlang или Elixir, также нет доступной библиотеки правил bazel. Поэтому мы определили собственные правила в https://github.com/rabbitmq/bazel-erlang. Компиляция Elixir рассматривается как особый случай в этом репозитории. Чтобы использовать эти правила, необходимо указать расположение ваших установок Erlang и Elixir в сборке (см. ниже).
Хотя большая часть работы по запуску тестов происходит в Bazel, набор по-прежнему использует некоторые внешние инструменты для команд, в частности gnu make и openssl. В идеале мы могли бы объединить все эти инструменты под bazel, чтобы единственным необходимым инструментом был bazel или bazelisk, но это займёт некоторое время.
На macOS:
brew install bazelisk
В противном случае:
https://docs.bazel.build/versions/master/install-bazelisk.html
user.bazelrc
Создайте user.bazelrc
, сделав копию user-template.bazelrc
и обновив пути в первых нескольких строках.
bazel run broker
Вы можете установить различные переменные среды, чтобы контролировать некоторые аспекты конфигурации, например так:
RABBITMQ_CONFIG_FILES=/path/to/conf.d \
RABBITMQ_NODENAME=<node>@localhost \
RABBITMQ_NODE_PORT=7000 \
bazel run broker
Это запустит RabbitMQ с конфигурациями, считываемыми из предоставленного каталога. Также будет запущен узел с заданным именем узла и со всеми прослушивающими портами, рассчитанными на основе заданного — таким образом вы можете запускать не конфликтующих кроликов даже из разных извлечений на одной машине.
Многие тесты rabbit порождают отдельные или кластеризованные узлы rabbit, поэтому лучше всего запускать наборы тестов последовательно на одном компьютере. Отсюда используется флаг --local_test_jobs=1
в .bazelrc
. Кроме того, может быть разумно отключить разделение тестов и потоковую передачу вывода тестов при локальном запуске тестов с --test_output=streamed
в качестве дополнительного аргумента (чтобы просто отключить разделение, но не передавать вывод, используйте --test_sharding_strategy=disabled
). Естественно, это ограничение не действует, если используется удалённое выполнение (как в случае конвейеров CI RabbitMQ).
Журналы Erlang Common Test не будут помещаться в каталог журналов при запуске с bazel. Их можно найти в bazel-testlogs
. Например, журналы приложения backing_queue набора rabbit будут находиться в bazel-testlogs/deps/rabbit/backing_queue_SUITE/test.outputs/
.
Примечание: это занимает довольно много времени на одном компьютере.
bazel test //...
rabbit является подходящим примером, поскольку он включает приложение rabbitmq_prelaunch.
bazel test deps/rabbit/...
bazel test deps/rabbit_common:all
bazel test //deps/rabbit:lazy_queue_SUITE
bazel run gazelle-update-repos -- hex.pm/accept@0.3.5
для создания/обновления bazel/BUILD.accept
bazel run gazelle-update-repos -- --testonly github.com/extend/ct_helper@master
bazel run gazelle
Регенерировать moduleindex.yaml:
bazel run :moduleindex > moduleindex.yaml
Отформатировать все файлы bazel единообразно (требуется buildifier):
buildifier -r .
Удалить неиспользуемые операторы загрузки из файлов BUILD.bazel (требуется buildozer):
buildozer 'fix unusedLoads' //...:pkg
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )