CI/CD Пайплайны
В проекте RUSEON Core используются GitHub Actions для обеспечения непрерывного контроля качества (Quality Gates), сканирования безопасности, валидации производительности и автоматической кроссплатформенной сборки бинарных релизов.
Каталог воркфлоу
1. Основной пайплайн тестирования (test.yml)
Запускается при каждом Pull Request и пуше в ветки main и dev.
| Этап | Инструменты и проверки | Критерий прохождения (Gate) |
|---|---|---|
| Гигиена модулей | go mod tidy && git diff --exit-code | Отсутствие неучтённых изменений в зависимостях |
| Статический анализ Go | golangci-lint (таймаут 5 мин) | 0 предупреждений линтера |
| Аудит безопасности | gosec (SAST-анализ) | 0 уязвимостей высокого и среднего уровня |
| Сборка бинарников | CGO_ENABLED=0 go build ./cmd/... | Успешная компиляция сервера и CLI |
| Тесты и E2E | go test -v -race -timeout=15m с MediaMTX + FFmpeg | 100% успешных тестов |
| Контроль покрытия | Codecov по 14 пакетам | Отсутствие регресса покрытия |
| Проверка фронтенда | oxlint, tsc --noEmit, Vitest, сборка Vite | 0 ошибок типов, 100% прохождение тестов компонентов |
2. Валидация производительности (performance.yml)
Гарантирует, что изменения в кодовой базе не приводят к деградации задержек в zero-copy пайплайне:
- Собирает релизный бинарник сервера.
- Разворачивает генератор синтетического мультикамерного RTSP-потока.
- Запускает сценарии k6, нагружающие раздачу HLS-плейлистов, согласование WebRTC WHEP и пробы
/livez. - Формирует динамические бейджи с реальными показателями задержки p95 (< 1.5 мс) и процентом успешных запросов (99.99%+).
3. Ночные расширенные E2E тесты (nightly.yml)
Запускаются ежедневно по расписанию в 02:00 UTC:
- Выполняют длительные сценарии непрерывной записи архива.
- Проверяют алгоритмы циклической очистки диска при имитации нехватки дискового пространства.
- Проверяют стабильность памяти при длительных сессиях WebRTC клиентов.
4. Автоматизация релизов (release.yml)
Активируется при публикации тега версии (например, v1.4.0):
- GoReleaser компилирует бинарные файлы для целевых платформ:
linux/amd64,linux/arm64,linux/armv7windows/amd64,windows/arm64darwin/amd64,darwin/arm64(Apple Silicon)
- Собирает и публикует мультиархитектурные Docker-образы в GitHub Container Registry (
ghcr.io/rusegal/ruseon-core). - Генерирует контрольные суммы SHA-256 и автоматический список изменений (Changelog).
5. Деплой документации (deploy.yml)
Публикует сайт документации на GitHub Pages с параметром fetch-depth: 0, что гарантирует получение реальных временных меток Git коммитов для sitemap и страниц.
Локальный запуск проверок CI
Вы можете воспроизвести проверки CI локально перед отправкой кода:
bash
# 1. Проверка модулей
go mod tidy && git diff --exit-code
# 2. Запуск линтера
golangci-lint run
# 3. Сканирование безопасности
gosec -exclude-dir=pkg/grpc/pb ./...
# 4. Запуск тестов с детектором гонок
go test -v -race ./...
# 5. Проверка фронтенда
cd web && npm run typecheck && npm run lint && npm run test:unit