Сборка из Исходного Кода
Это руководство охватывает сборку IceGate из исходного кода для разработки и продакшена.
Предварительные Требования
Обязательные
- Rust >= 1.92.0 (для поддержки Rust 2024 edition)
- Cargo (входит в Rust)
- Git
Опциональные
- Java (для регенерации ANTLR парсера)
- Docker (для среды разработки)
- protoc (для регенерации protobuf кода)
Установка Rust
# Установка через rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Проверка установки
rustc --version
cargo --version
Клонирование Репозитория
git clone https://github.com/icegatetech/icegate.git
cd icegate
Сборка
Debug Сборка
cargo build
Артефакты сборки в target/debug/.
Release Сборка
cargo build --release
Артефакты сборки в target/release/.
Конкретные Бинарные Файлы
# Только сервис Query
cargo build --bin query
# Только сервис Ingest
cargo build --bin ingest
# Только сервис Maintain
cargo build --bin maintain
Профили Сборки
| Профиль | Команда | Назначение |
|---|---|---|
| dev | cargo build |
Разработка, отладка |
| release | cargo build --release |
Продакшен |
| test | cargo test |
Запуск тестов |
| bench | cargo bench |
Бенчмарки |
Конфигурация Профилей
Пользовательские профили в Cargo.toml:
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
[profile.dev]
opt-level = 0
debug = true
Структура Рабочего Пространства
IceGate использует Cargo workspace:
Cargo.toml (workspace)
├── crates/
│ ├── icegate-common/Cargo.toml
│ ├── icegate-catalog-s3/Cargo.toml
│ ├── icegate-queue/Cargo.toml
│ ├── icegate-query/Cargo.toml
│ ├── icegate-ingest/Cargo.toml
│ └── icegate-maintain/Cargo.toml
Сборка отдельных крейтов:
cargo build -p icegate-query
cargo build -p icegate-common
Запуск Сервисов
Сервис Query
cargo run --bin query -- run -c config/docker/query.yaml
Сервис Ingest
cargo run --bin ingest -- run -c config/docker/ingest.yaml
Сервис Maintain
cargo run --bin maintain -- migrate create -c config/docker/maintain.yaml
Регенерация Парсера LogQL
Парсер LogQL генерируется из файлов грамматики ANTLR4.
Предварительные Требования
- Java JDK 11+
Генерация Парсера
cd crates/icegate-query/src/logql
# Установка ANTLR jar (первый раз)
make install
# Регенерация парсера из .g4 файлов
make gen
Файлы грамматики находятся в crates/icegate-query/src/logql/antlr/.
Запуск Тестов
# Все тесты
cargo test
# Конкретный тест
cargo test test_name
# С выводом
cargo test -- --nocapture
# В release режиме (быстрее, но дольше собирается)
cargo test --release
Качество Кода
# Проверка форматирования
make fmt
# Линтинг
make clippy
# Аудит безопасности
make audit
# Все проверки CI
make ci
Устранение Проблем Сборки
Ошибки Компиляции
-
Убедитесь, что версия Rust >= 1.92.0:
rustup update -
Очистите артефакты сборки:
cargo clean cargo build
Ошибки Линковки
Некоторые зависимости требуют системных библиотек:
macOS:
brew install openssl
Ubuntu/Debian:
apt install libssl-dev pkg-config
Нехватка Памяти
Крупные кодовые базы могут требовать больше памяти:
# Уменьшение параллелизма
cargo build -j 2
Сборка Docker
Сборка контейнерных образов:
# Release-сборка (мульти-архитектурная, с кешем cargo-chef)
docker build -t icegate/query:latest \
--build-arg BINARY=query \
-f config/docker/release.Dockerfile .
# Dev-сборка (проще, одна архитектура)
docker build -t icegate/query:dev \
--build-arg BINARY=query \
--build-arg PROFILE=debug \
-f config/docker/Dockerfile .
Следующие Шаги
- Настройте Окружение для разработки со Skaffold или Docker Compose
- Изучите Паттерны разработки
- Начните Участвовать
Предыдущая
Следующая