can be tested.
Результаты проверок отображаются на странице pull request в GitHub, как описано в документации GitHub о проверках.
Если какая-либо проверка завершается ошибкой, вам может потребоваться её исправить.
На этой странице приведён обзор проверок, с которыми вы можете столкнуться, и того, что можно сделать для их исправления.
Если похоже, что сбой проверки не связан с вашими изменениями, это может быть временный сбой или проблема с инфраструктурой.
Отправьте пустой коммит в pull request, чтобы перезапустить проверки CI:
Слияние с master
Cannot fetch mergecommit.
Чтобы эта проверка прошла, разрешите конфликт слияния, как описано в документации GitHub, или слейте ветку master в ветку вашего pull request с помощью git.
Проверка документации
ERROR и WARNING.
Проверка описания
Docker-образ
Тесты официальной библиотеки Docker
clickhouse/clickhouse-server работает корректно.
Чтобы добавить новые тесты, создайте каталог ci/jobs/scripts/docker_server/tests/$test_name и поместите в него скрипт run.sh.
Дополнительные сведения о тестах можно найти в документации по скриптам CI-задач.
Проверка маркера
Проверка стиля
cpp
ci/jobs/scripts/check_style/check_cpp.sh (его также можно запускать локально).
Если проверка завершилась ошибкой, исправьте проблемы со стилем в соответствии с руководством по стилю кода.
codespell, aspell
mypy
Запуск задачи проверки стиля локально
clickhouse/style-test и запускают задачу в контейнерной среде.
Никаких дополнительных зависимостей, кроме Python 3 и Docker, не требуется.
Запуск тестов без сохранения состояния
Необходимые условия
- Python 3 (только стандартная библиотека)
- Docker
Запустите задачу CI локально
- Всегда указывайте имя задачи в кавычках и в точности так, как оно приведено в отчёте CI (оно может содержать пробелы и запятые), например:
"Stateless tests (amd_debug, parallel)". Это задаёт ту же конфигурацию ClickHouse и запускает те же тесты, что и в CI. - Архитектура и тип сборки в имени задачи (например,
amd_debug) — это метки, специфичные для CI. При локальном запуске они ни на что не влияют: задача будет использовать тот бинарный файл, который вы указали, и ту архитектуру, на которой вы её запускаете. Имя задачи определяет только конфигурацию ClickHouse и набор тестов (если это не переопределено через--test). - В CI функциональные тесты разделены на батчи для более эффективного использования ресурсов. Например,
"Stateless tests (amd_debug, parallel)"и"Stateless tests (amd_debug, sequential)"вместе охватывают весь объём: тесты, безопасные для параллельного запуска, выполняются одновременно, а остальные — последовательно. Такое разделение сокращает общее время CI, максимально используя параллелизм там, где это возможно. Чтобы локально воспроизвести полный набор тестов, запустите оба батча. - Также есть задача CI
"Fast test", которая запускает ограниченный набор функциональных тестов для проверки базовой работоспособности ClickHouse. Она использует сборку не со всеми необязательными модулями и позволяет быстрее всего обнаружить регрессии. Её можно запустить локально тем же способом. Поместите бинарный файл ClickHouse в один из стандартных путей поиска (./ci/tmp/clickhouse,./build/programs/clickhouseили./clickhouse) — иначе задача сначала попытается собрать ClickHouse:
Запуск отдельных тестов в рамках задачи CI
--test задача подготавливает ту же конфигурацию ClickHouse, что используется в CI, но запускает только выбранные тесты:
- Можно указать несколько имен тестов:
- Совет: если подходит любая конфигурация ClickHouse и вам нужно запустить только определенные тесты, используйте псевдоним
functionalвместо полного имени задачи:
Дополнительные параметры настройки
--path PATH— пользовательский путь к бинарному файлу ClickHouse. По умолчанию runner ищет в следующем порядке:./ci/tmp/clickhouse,./build/programs/clickhouse,./clickhouse.--count N— повторить каждый тест N раз.--workers N— переопределить автоматический расчёт числа параллельных воркеров на основе ресурсов машины.
Проверка сборки
Локальный запуск сборок
Доступные задачи сборки
Build (amd_debug)- Отладочная сборка с символамиBuild (amd_release)- Оптимизированная релизная сборкаBuild (amd_asan)- Сборка с Address SanitizerBuild (amd_tsan)- Сборка с Thread SanitizerBuild (amd_msan)- Сборка с Memory SanitizerBuild (amd_ubsan)- Сборка с Undefined Behavior SanitizerBuild (amd_binary)- Быстрая релизная сборка без Thin LTOBuild (amd_compat)- Сборка для старых системBuild (amd_musl)- Сборка с musl libcBuild (amd_darwin)- Сборка для macOSBuild (amd_freebsd)- Сборка для FreeBSD
Build (arm_release)- Оптимизированная релизная сборка ARM64Build (arm_asan)- Сборка ARM64 с Address SanitizerBuild (arm_coverage)- Сборка ARM64 с инструментированием для анализа покрытияBuild (arm_binary)- Быстрая релизная сборка ARM64 без Thin LTOBuild (arm_darwin)- Сборка ARM64 для macOSBuild (arm_v80compat)- Сборка для совместимости с ARMv8.0
Build (ppc64le)- PowerPC 64-bit Little EndianBuild (riscv64)- 64-разрядная RISC-VBuild (s390x)- 64-разрядная IBM System/390Build (loongarch64)- 64-разрядная LoongArch
<repo_root>/ci/tmp/build.
Примечание: Для сборок, не относящихся к категории “Другие архитектуры” (в которой используется кросс-компиляция), архитектура локальной машины должна соответствовать типу сборки, чтобы получить сборку, указанную в BUILD_JOB_NAME.
Пример
Функциональные тесты без сохранения состояния
Интеграционные тесты
Проверка валидации исправления ошибки
Стресс-тест
- Сначала устраните все остальные сбои тестов;
- Просмотрите отчет, чтобы найти журналы сервера, и проверьте их на наличие возможных причин ошибки.
Проверка совместимости
clickhouse в дистрибутивах со старыми версиями libc.
Если нет, обратитесь за помощью к мейнтейнеру.