Skip to content

CI/CD Пайплайны ​

В проекте RUSEON Core используются GitHub Actions для обеспечения непрерывного контроля качества (Quality Gates), сканирования безопасности, валидации производительности и автоматической кроссплатформенной сборки бинарных релизов.


Каталог воркфлоу ​

1. Основной пайплайн тестирования (test.yml) ​

Запускается при каждом Pull Request и пуше в ветки main и dev.

ЭтапИнструменты и проверкиКритерий прохождения (Gate)
Гигиена модулейgo mod tidy && git diff --exit-codeОтсутствие неучтённых изменений в зависимостях
Статический анализ Gogolangci-lint (таймаут 5 мин)0 предупреждений линтера
Аудит безопасностиgosec (SAST-анализ)0 уязвимостей высокого и среднего уровня
Сборка бинарниковCGO_ENABLED=0 go build ./cmd/...Успешная компиляция сервера и CLI
Тесты и E2Ego test -v -race -timeout=15m с MediaMTX + FFmpeg100% успешных тестов
Контроль покрытияCodecov по 14 пакетамОтсутствие регресса покрытия
Проверка фронтендаoxlint, tsc --noEmit, Vitest, сборка Vite0 ошибок типов, 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/armv7
    • windows/amd64, windows/arm64
    • darwin/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

Связанная документация ​

Released under the MIT License.