1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-rabbitmq

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
BAZEL.md 7.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 20:26 ab510b4

Bazel build

From https://docs.bazel.build/versions/master/bazel-overview.html

Bazel — это инструмент для сборки и тестирования с открытым исходным кодом, похожий на Make, Maven и Gradle. Он использует понятный человеку высокоуровневый язык сборки. Bazel поддерживает проекты на разных языках и создаёт выходные данные для разных платформ. Bazel подходит для больших кодовых баз в нескольких репозиториях и большого количества пользователей.

Зачем RabbitMQ + 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, но это займёт некоторое время.

Запуск тестов

Установите 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

Добавьте/обновите внешнюю зависимость

из hex.pm

  1. bazel run gazelle-update-repos -- hex.pm/accept@0.3.5 для создания/обновления bazel/BUILD.accept
  2. Добавьте/обновите запись в MODULE.bazel

Из github

  1. bazel run gazelle-update-repos -- --testonly github.com/extend/ct_helper@master
  2. Добавьте/обновите запись в MODULE.bazel

Обновите файлы BUILD

bazel run gazelle Регенерировать moduleindex.yaml:

bazel run :moduleindex > moduleindex.yaml

Additional Useful Commands

  • Отформатировать все файлы bazel единообразно (требуется buildifier):

    buildifier -r .

  • Удалить неиспользуемые операторы загрузки из файлов BUILD.bazel (требуется buildozer):

    buildozer 'fix unusedLoads' //...:pkg

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-rabbitmq.git
git@api.gitlife.ru:oschina-mirror/mirrors-rabbitmq.git
oschina-mirror
mirrors-rabbitmq
mirrors-rabbitmq
main