О Buildbot
Обзор
Целью MariaDB Foundation Buildbot является обеспечение всестороннего тестирования MariaDB Server на всех поддерживаемых платформах и средах. В настоящее время мы выполняем 100 различных конфигураций для следующих платформ:
- x64 и x86
- aarch64
- ppc64le
- s390x
и операционных систем:
- Debian 9, 10, 11 и Sid
- Ubuntu 16.04, 18.04, 20.04 и 21.04
- Fedora 33 и 34
- CentOS 7 и 8
- RHEL 7 и 8
- SLES 12 и 15
- OpenSUSE 15 и 42
- Windows
- AIX-7.2
Кроме того, мы проводим другие тесты экосистемы для:
- PHP
- DBdeployer
- MySqlJS
- PyMySQL
Пакеты, собранные buildbot, можно загрузить здесь.
Что такое Buildbot?
MariaDB Foundation использует Buildbot, фреймворк непрерывной интеграции и тестирования, для тестирования и создания пакетов MariaDB Server. Он размещен на https://buildbot.mariadb.org/ и гарантирует, что каждый push в репозиторий MariaDB Server в GitHub должным образом протестирован.
Кто использует Buildbot?
Каждый разработчик MariaDB должен использовать Buildbot, чтобы убедиться, что внесенные изменения должным образом протестированы на всех поддерживаемых платформах и средах. Для обеспечения этого Buildbot используется для защиты ветвей. Однако, даже несмотря на включенную защиту ветвей, только несколько выбранных билдеров являются её частью. Поэтому ответственность разработчика заключается в мониторинге всех билдеров и убеждении, что всё в порядке, прежде чем делать финальный push в главную ветвь MariaDB.
Ключевые слова Buildbot
- Изменения/Репозиторий - Любое изменение в исходном коде (коммит)
- Главный билдер - Основной процесс, выполняемый на выделенном компьютере. Он проверяет изменения в исходном коде и отвечает за планирование сборки
- Сборка - Фактическая конфигурация, которая тестируется. Она состоит из последовательности шагов, которые определяют фактический тест (например, получение исходного кода, компиляция, запуск тестов и т. д.)
- Работник Buildbot - Процесс, который ожидает команд от Главного билдера для выполнения сборки
Как работает Buildbot?
Что касается Главного билдера Buildbot, мы используем многомастерную конфигурацию. Это означает, что у нас несколько работающих процессов мастера. Таким образом, у нас есть выделенный мастер для пользовательского интерфейса и несколько других, которые занимаются поиском изменений и планированием сборок.
Каждый раз, когда происходит push в репозиторий MariaDB Server, это обнаруживается главным билдером Buildbot, который планирует все сборки. Каждая сборка определяет различную конфигурацию теста. В основном мы используем Docker Latent Workers, что означает, что для каждой сборки мастер запускает Docker контейнер на удалённой машине. Контейнер настроен на запуск процесса buildbot-worker при запуске. Этот процесс теперь может получать инструкции от мастера. Таким образом, используя latent workers, процесс buildbot-worker не постоянно работает на машине-рабочем узле. Вместо этого для каждой сборки запускается отдельный контейнер.
Ниже приведён подробный пошаговый обзор того, что происходит после push в репозиторий MariaDB Server:
- Шаг 1: Обнаружение нового изменения в репозитории MariaDB Server
- Триггер создания исходного tar-архива
- Шаг 2: Создание tar-архива
- Клонирование репозитория и создание исходного tar-архива, соответствующего последним изменениям
- Триггер сборок bintar
- Шаг 3: Сборки bintar
- Получение предварительно созданного исходного tar-архива
- Компиляция
- Тестирование (mysql-test-run)
- Сохранение bintar
- Триггер сборок пакетов
- Триггер сборок экосистемы
- Шаг 4.1: Создание пакетов
- Получение исходного кода
- Создание пакетов
- Сохранение пакетов
- Триггер сборок установки
- Шаг 4.2: Тестирование экосистемы
- Шаг 5: Сборки установки
- Получение пакетов
- Проверка успешной установки
- Триггер сборок обновления
- Шаг 6: Сборки обновления
- Проверка успешного обновления предыдущей версии MariaDB Server до текущей
Нижеследующая информация относится к старому Buildbot (http://buildbot.askmonty.org/), а не к новому Buildbot (https://buildbot.mariadb.org/). Информация устарела или иным образом некорректна.
Обзор
Текущее состояние деревьев MariaDB с точки зрения сбоев сборки или тестирования всегда доступно на странице настроек Buildbot.
- Статус страницы водопада MariaDB-5.5
- Статус страницы водопада MariaDB-10.0
- Статус страницы водопада MariaDB-10.1
Настройка BuildBot опрашивает деревья Launchpad каждые 5 минут, чтобы обнаружить изменения. Всякий раз, когда в одном из наших деревьев обнаруживается новый push, новый код компилируется и проходит через тестовый набор.
Если все платформы зелёные после этого, значит всё хорошо. Если нет, это означает, что с push есть проблема, и кто-то должен разобраться с ней как можно быстрее. Если это был ваш push, то тем, кто должен его просмотреть, являетесь вы!
BuildBot - это универсальная программа с лицензией GPL, предоставляющая фреймворк для непрерывного тестирования интеграции. Дополнительную информацию о BuildBot можно найти на домашней странице проекта BuildBot.
Желание запустить сервер сборки
Многие наши хосты сборки управляются членами сообщества, и мы всегда ищем дополнительных добровольцев, чтобы помочь нам охватить дополнительные платформы или варианты сборки в BuildBot.
Если вы можете предоставить для этой цели дополнительную машину, ваша помощь будет очень оценена! Это хороший способ участвовать, не тратя много времени. Начните с написания письма на адрес 'developers (at) lists.mariadb.org' с предложением запустить сервер BuildBot.
Настройка сервера BuildBot
См. buildbot-setup.
Приостановка mysql-test-run.pl
Иногда вам нужно работать, когда ваш компьютер занят выполнением тестов для buildbot. Мы добавили новую функцию в скрипт mysql-test-run.pl, которая позволяет временно остановить его, чтобы вы могли использовать свой компьютер, а затем возобновить тесты, когда будете готовы.
Для этого определите переменную окружения "MTR_STOP_FILE". Всякий раз, когда существует файл, указанный этой переменной окружения, скрипт mysql-test-run.pl остановится, как только сможет (т. е. не остановится сразу). Когда файл удален, скрипт mysql-test-run.pl продолжит с того места, где остановился.
Если вы планируете использовать эту функцию, вы также должны установить переменную окружения "MTR_STOP_KEEP_ALIVE" со значением 120. Это заставит скрипт выводить сообщения в buildbot каждые 2 минуты, что предотвратит тайм-аут.
База данных с результатами тестов
Buildbot сохраняет результаты тестовых запусков в базе данных, для использования в улучшенных отчётах на веб-страницах без необходимости изменения кода Buildbot, и для анализа данных при исследовании сбоев тестов.
Схема базы данных документирована в схеме базы данных Buildbot. Схема, вероятно, будет развиваться по мере добавления нами дополнительных типов информации.
Пока данные не доступны снаружи. Но план состоит в том, чтобы настроить базу данных-сервер для репликации данных и предоставить доступ (например, удалённые учётные записи базы данных) членам сообщества с интересными идеями о том, как представить или обработать эти данные, или просто любопытствующим. Если кто-то заинтересован в этом или хочет предложить сервер для этой цели, пожалуйста, отправьте письмо на developers@lists.mariadb.org. Чем больше людей проявят интерес, тем быстрее это, вероятно, произойдёт!
Отчёты
Мы разрабатываем новые отчёты, основанные на результатах тестов в базе данных. Эти отчёты будут расположены здесь. Первый отчёт - Перекрёстная ссылка. Этот отчёт позволяет искать все сбои тестов.
Техническое обслуживание Buildbot
Вот информация о том, как настроена и поддерживается наша установка Buildbot:
- Файл конфигурации включён в репозиторий Инструменты MariaDB.
- Сборка и тестирование бинарных пакетов документированы на странице package-testing-with-buildbot-and-kvm.
- Мы разработали небольшой инструмент runvm, который используется для выполнения некоторых сборок внутри виртуальной машины, в основном для тестирования сборок бинарных пакетов.
- На странице Разработка BuildBot описано, как мы разработали некоторые улучшения для BuildBot, которые используем и внесли в upstream.
См. также
- Страница Buildbot ToDo
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/about-buildbot/