Перейти к основному содержанию
ClickHouse можно собирать в Linux, FreeBSD и macOS. Если вы используете Windows, ClickHouse всё равно можно собрать в виртуальной машине под управлением Linux, например в VirtualBox с Ubuntu.

Создайте репозиторий на GitHub

Чтобы начать разрабатывать для ClickHouse, вам понадобится учетная запись GitHub. Также локально сгенерируйте SSH-ключ (если у вас его еще нет) и загрузите открытый ключ в GitHub, так как это обязательное условие для отправки исправлений. Затем создайте форк репозитория ClickHouse в своей учетной записи, нажав кнопку “fork” в правом верхнем углу. Чтобы внести изменения, например исправление ошибки или новую возможность, сначала закоммитьте свои изменения в ветку своего форка, а затем создайте “Pull Request” с этими изменениями в основной репозиторий. Для работы с Git-репозиториями установите Git. Например, в Ubuntu выполните:
Шпаргалка по Git доступна здесь. Подробное руководство по Git доступно здесь.

Клонируйте репозиторий на локальную машину

Сначала скачайте исходные файлы на локальную машину, то есть клонируйте репозиторий:
Эта команда создаёт каталог ClickHouse/, содержащий исходный код, тесты и другие файлы. После URL можно указать собственный каталог для извлечения, но важно, чтобы этот путь не содержал пробелов, так как это может впоследствии нарушить сборку. Git-репозиторий ClickHouse использует подмодули для подключения сторонних библиотек. По умолчанию подмодули не извлекаются. Вы можете либо
  • запустить git clone с параметром --recurse-submodules,
  • если git clone был запущен без --recurse-submodules, выполните git submodule update --init --jobs <N>, чтобы явно извлечь все подмодули. (<N> можно, например, задать равным 12, чтобы распараллелить загрузку.)
  • если git clone был запущен без --recurse-submodules и вы хотите использовать shallow checkout подмодулей, чтобы не загружать их историю и сэкономить место, выполните ./contrib/update-submodules.sh. Этот вариант используется в CI, но не рекомендуется для локальной разработки, так как делает работу с подмодулями менее удобной и более медленной.
Чтобы проверить состояние Git-подмодулей, выполните git submodule status. Если вы получаете следующее сообщение об ошибке
SSH-ключи для подключения к GitHub отсутствуют. Обычно эти ключи находятся в ~/.ssh. Чтобы GitHub принимал SSH-ключи, их нужно загрузить в настройках GitHub. Вы также можете клонировать репозиторий по HTTPS:
Однако в этом случае вы не сможете отправлять свои изменения на сервер. Тем не менее этот вариант можно использовать временно, а SSH-ключи добавить позже, заменив удалённый адрес репозитория с помощью команды git remote. Вы также можете добавить адрес исходного репозитория ClickHouse в свой локальный репозиторий, чтобы получать обновления оттуда:
После успешного выполнения этой команды вы сможете получать обновления из основного репозитория ClickHouse с помощью git pull upstream master.
Пожалуйста, не используйте просто git push: вы можете отправить изменения не в тот удалённый репозиторий и/или не в ту ветку. Лучше явно указывать имена удалённого репозитория и ветки, например: git push origin my_branch_name.

Написание кода

Ниже приведены несколько ссылок, которые могут быть полезны при написании кода для ClickHouse:

IDE

Visual Studio Code и Neovim — два варианта, которые хорошо подходят для разработки ClickHouse. Если вы используете VS Code, мы рекомендуем расширение clangd вместо IntelliSense, так как оно работает значительно быстрее. CLion — ещё одна отличная альтернатива. Однако на крупных проектах, таких как ClickHouse, он может работать медленнее. Вот несколько моментов, о которых стоит помнить при использовании CLion:
  • CLion самостоятельно создаёт путь build и автоматически выбирает debug в качестве типа сборки
  • Он использует версию CMake, заданную в CLion, а не ту, которую вы установили
  • CLion использует make для запуска задач сборки вместо ninja (это нормальное поведение)
Среди других IDE, которые можно использовать, — Sublime Text, Qt Creator и Kate.

Создайте pull request

Перейдите в репозиторий своего форка в интерфейсе GitHub. Если вы вели разработку в ветке, нужно выбрать именно эту ветку. На экране будет кнопка “Pull request”. По сути, это означает «создать запрос на принятие моих изменений в основной репозиторий». Pull request можно создать, даже если работа еще не завершена. В этом случае добавьте слово “WIP” (work in progress) в начало заголовка — позже его можно будет изменить. Это полезно для совместной проверки и обсуждения изменений, а также для запуска всех доступных тестов. Важно добавить краткое описание ваших изменений — позже оно будет использовано при формировании changelog релиза. Тестирование начнется, как только сотрудники ClickHouse пометят ваш PR меткой “can be tested”. Результаты некоторых первых проверок (например, стиля кода) появятся через несколько минут. Результаты проверки сборок поступят в течение получаса. Результаты основного набора тестов появятся в течение часа. Система подготовит отдельные бинарные сборки ClickHouse для вашего pull request. Чтобы получить эти сборки, нажмите ссылку “Details” рядом с пунктом “Builds” в списке проверок. Там вы найдете прямые ссылки на собранные .deb-пакеты ClickHouse, которые можно развернуть даже на серверах в продакшне (если не боитесь).

Документируйте изменения

Каждый pull request, добавляющий новую возможность, должен сопровождаться соответствующей документацией. Если вы хотите предварительно просмотреть изменения в документации, инструкции по локальной сборке страницы документации доступны в файле README.md здесь. При добавлении новой функции в ClickHouse вы можете использовать приведённый ниже шаблон как образец:

Использование тестовых данных

При разработке ClickHouse часто возникает необходимость загружать реалистичные наборы данных. Это особенно важно при тестировании производительности. У нас есть специально подготовленный набор анонимизированных данных веб-аналитики. Для этого дополнительно потребуется около 3 ГБ свободного места на диске.
В clickhouse-client:
Импортируйте данные:
Последнее изменение 25 июня 2026 г.