Перейти к содержимому
GitRiverGitRiver
EN

Всё для DevOps в одном месте

размещение git-репозиториев, CI/CD, реестр контейнеров и пакетов, задачи, запросы на слияние, GitOps-развёртывание и безопасность - в одном бинарнике, при 46 МБ памяти в покое

размещение git-репозиториев

Полноценное размещение Git-репозиториев с современным веб-интерфейсом, SSH-сервером и поддержкой больших файлов

  • HTTP и встроенный SSH-сервер (без системного sshd)
  • Ветки, теги, blame с авторством, сравнение коммитов
  • Веб-редактор: создание, редактирование, пакетная отправка нескольких файлов
  • Релизы с бинарными артефактами
  • Git LFS (пакетный API + блокировка файлов)
  • GPG-подписи коммитов: проверка ключами учётных записей со сверкой почты автора
  • Встроенная Wiki с историей ревизий

Совместимость и перенос

Чужие инструменты работают со сменой адреса узла и токена, а история переезжает вместе с запроса на слияниеми

  • Интерфейс GitHub на /api/v3 - работают gh, octokit и совместимые библиотеки
  • Интерфейс GitLab на /api/v4 - работают glab, python-gitlab и провайдер Terraform
  • Импорт из GitHub, GitLab, Bitbucket, Gitea, произвольного URL
  • Перенос забирает и запросы на слияние (GitHub, GitLab, Gitea)
  • Отчёт о переносе в настройках репозитория
  • Зеркалирование (pull и push) по заданному интервалу или по кнопке
  • Обещание совместимости /api/v1: что в ответах не меняется и сколько живёт устаревший вызов

конвейеры CI/CD

Мощная система непрерывной интеграции и доставки со встроенным исполнителем и YAML-конфигурацией

  • YAML-конфигурация в .gitriver/workflows/
  • DAG-зависимости (needs:) для параллельного выполнения
  • Матрица сборок с прерыванием при ошибке и ограничением параллельности
  • Правила запуска (if/changes/when) с вычислением выражений
  • Повторы с условиями (сбой скрипта, зависание, всегда)
  • Артефакты (paths, dotenv, JUnit, отчёты покрытия)
  • Кеш с интерполяцией ключей и политиками push/pull
  • Сервисные контейнеры (Docker-сеть, псевдоним, переменные)
  • 4 уровня переменных: установка -> группа -> репозиторий -> окружение
  • Группы одновременности с автоотменой прерываемых конвейеров
  • Ручной запуск задач (кнопка «Запустить» из интерфейса)
  • Внешние действия (uses: owner/action@ref)
  • Запланированные конвейеры (cron-выражения)
  • Веб-терминал - интерактивная отладка (xterm.js + WebSocket + PTY)
  • Внешние исполнители + автомасштабирование в K8s (шаблон пода, tolerations)
  • Docker-в-Docker (автодетект: sysbox/rootless/privileged)
  • Маскировка секретов в журналах
  • Отчёты тестов и покрытия (JUnit XML + Cobertura XML)
  • Чужой код ждёт разрешения человека, прежде чем занять исполнителей
  • Кеш между запусками на внешних исполнителях, вытеснение забытого кеша
  • Расписания хранятся в базе; страница сборок называет причину, по которой расписание молчит

Реестр контейнеров

OCI-совместимый реестр контейнеров - встроен в платформу, не требует отдельного сервиса

  • OCI Distribution Spec v2 (монолитная + фрагментированная загрузка, cross-repo mount)
  • Аутентификация Docker Token Auth (JWT с OCI-областями)
  • Мультиархитектурные манифесты (index/manifest list)
  • Сканирование уязвимостей (Trivy, SARIF)
  • Правила неизменяемости тегов (glob-маски)
  • Политики хранения (сохранять последние N, удалять старше N дней)
  • Сборка мусора (ручная + по расписанию)
  • Детали образа (слои, конфигурация, метаданные)
  • Учёт квот по репозиторию
  • Хранилища: файловая система + S3-совместимое
  • Обнаружение расхождений образов (текущий vs ожидаемый дайджест)

Реестр пакетов

Приватные репозитории пакетов для 7 форматов и зеркало внешних реестров - бесплатно в Community

  • npm (публикация, установка, метаданные, поиск)
  • PyPI (PEP 503, загрузка, simple index, скачивание)
  • Cargo (публикация, yank/unyank, скачивание, индекс, поиск)
  • Maven (загрузка и скачивание артефактов)
  • NuGet V3 (публикация, удаление, запросы, поиск, регистрация)
  • Generic (загрузка/скачивание произвольных файлов)
  • Интеграция с CI/CD для автопубликации
  • Composer (Packagist v2)
  • Зеркало внешнего реестра образов: docker pull через ваш узел
  • Выдача пакетов через посредника: кеш внешних реестров, прогрев, вытеснение, отчёты

Задачи и проекты

Управление задачами и проектами с досками задач, шаблонами и полнотекстовым поиском

  • Задачи с метками, назначением и вехами
  • доски задач (проекты, перетаскивание, привязка к задачам)
  • Шаблоны задач и запросов на слияние (.gitriver/templates/)
  • Комментарии с Markdown
  • Связи между задачами
  • Фильтрация и полнотекстовый поиск

Запросы на слияние и рецензирование кода

Полный цикл рецензирования кода с защитой веток, CODEOWNERS и автоматическим слиянием

  • Построчные комментарии к коду в diff
  • Рецензирование кода: одобрение / запрос изменений
  • CODEOWNERS - автоматические рецензенты по путям файлов
  • Очередь слияния с CI-интеграцией и временными ветками
  • Защита веток (маски, обязательные рецензии, проверки CI)
  • Стратегии слияния: squash, merge, rebase
  • Запросы на слияние из форков (cross-repo)
  • Назначение ответственных и запросы рецензирование
  • Требование подписанных коммитов
  • Требование актуальности ветки
  • Ветки обсуждения: ответы, пометка решённой, счётчик нерешённых
  • Правило слияния «все ветки обсуждения решены»

GitOps-развёртывание (RiverCD)

Встроенный GitOps-контроллер - развёртывание в Kubernetes прямо из GitRiver без внешних инструментов

  • Deployment, StatefulSet, DaemonSet, Job, CronJob
  • Service, ConfigMap, Secret, PVC, Ingress, HPA
  • CRD (произвольные ресурсы и манифесты)
  • Волны синхронизации (порядок применения ресурсов)
  • Хуки до и после синхронизации
  • Обнаружение расхождений (текущее vs ожидаемое состояние)
  • Проверки здоровья (по ресурсам и приложению)
  • Канареечное развёртывание (постепенное переключение трафика)
  • Сине-зелёное развёртывание (переключение сервиса)
  • Откат к предыдущей версии
  • Логи и диагностика подов из интерфейса
  • Мультикластер (добавление и тестирование кластеров)
  • Pull-based GitOps (авто-синхронизация при изменении HEAD)

Знание и помощник

ProMax

Знание команды живёт рядом с кодом, а языковая модель разбирает упавшую сборку и изменения запроса на слияние

  • Записи знания в .gitriver/knowledge/ - вместе с кодом и его историей
  • Черновики: сборка пачки черновиков в ветку и запрос на слияние
  • Проверка записи на секреты при приёме
  • Вкладка знания в репозитории с поиском
  • Сведение счётчиков по команде и отчёт «мёртвая память» — Pro
  • Указатель по коду: вкладка «Символы», переходы к определению и к вызывающим — Pro
  • Помощник: разбор упавшего задания CI — Pro
  • Помощник: разбор изменений запроса на слияние машинно-помеченным комментарием — Pro
  • Настройки поставщика модели, учёт расхода и пределы по людям и группам — Pro
  • Пределы черновиков знания — Max

Безопасность и аналитика

ProMax

Сканирование уязвимостей, проверка лицензий зависимостей и DORA-метрики - в Pro, журнал аудита, квоты и правила по адресам установки - в Max

  • Сканирование уязвимостей (импорт SARIF: Semgrep, Trivy, CodeQL, OSV) — Pro
  • Пользовательские маски поиска секретов (regex) — Pro
  • Панель уязвимостей (критичность, статус, отклонение) — Pro
  • Проверка лицензий зависимостей (белый/чёрный список, SPDX, CycloneDX SBOM) — Pro
  • DORA-метрики (частота развёртывания, время до продакшена, доля сбоев, время восстановления) — Pro
  • Настраиваемые роли (гибкие наборы прав для групп) — Pro
  • IP-правила уровня группы (белый/чёрный список) — Pro
  • Журнал аудита - запись всех действий — Max
  • IP-правила уровня установки (фильтруют все входящие запросы, включая анонимные) — Max
  • Квоты хранилища (по пользователям и группам) — Max
  • Сканирование образов реестра на уязвимости (Trivy) - бесплатно в Community
  • Проверка пароля по списку утёкших, единая наименьшая длина 12 символов

Уведомления

8 каналов уведомлений из коробки с настройкой событий и шаблонов

  • Встроенные уведомления в интерфейсе
  • Email (SMTP)
  • Telegram
  • Max (мессенджер VK)
  • Slack (Block Kit)
  • Discord (Embeds)
  • Microsoft Teams (Adaptive Cards)
  • Matrix (Element)
  • Вебхуки (HMAC-SHA256, повторы, история доставки)
  • Настройки email (тихий режим / упоминания / всё)
  • Фильтрация событий (по веткам и авторам)
  • Настраиваемые шаблоны сообщений

Резервное копирование

Полное резервное копирование с шифрованием и инкрементальным режимом - управление из интерфейса

  • Полная резервная копия (БД + репозитории + реестр + CI + сайты)
  • Инкрементальная резервная копия (только изменённые файлы)
  • Шифрование AES-256-GCM
  • Выборочное восстановление (по компонентам)
  • Запланированные резервные копии (cron-расписание)
  • Авторотация (ограничение количества копий)
  • Проверка контрольной суммы (SHA256, потоковая)
  • Потоковая загрузка в S3 (без нехватки памяти)
  • Одноразовые ссылки для скачивания (безопасность)

Статические сайты и Wiki

Размещение статических сайтов и документации прямо из репозитория

  • Статический размещение из репозитория (развёртывание из ZIP или CI)
  • Встроенная Wiki с Markdown и историей ревизий
  • Пользовательские домены
  • Поддержка SPA (fallback на index.html)
  • Автоматическое развёртывание из CI (артефакт public/)
  • Защита от обхода путей

Аутентификация и единый вход

ProMax

Гибкая система аутентификации с корпоративными провайдерами, 2FA и управлением сессиями

  • OAuth2 / OpenID Connect (GitHub, Google, GitLab)
  • LDAP / Active Directory (привязка, поиск, тест из интерфейса) — Max
  • SAML 2.0 (метаданные SP, ACS, XMLDsig, SLO, синхронизация пользователей и групп) — Max
  • SCIM 2.0 (управление пользователями и группами, синхронизация членства) — Max
  • Двухфакторная аутентификация (TOTP с QR, резервные коды)
  • Персональные токены доступа (области, срок действия)
  • Токены развёртывания (по репозиторию, области)
  • Настраиваемые роли (гибкие наборы прав для групп) — Pro
  • Управление сессиями (активные сессии, удалённый выход)
  • SSH и GPG ключи
  • Узел как поставщик OIDC: id_token с проверяемой подписью (JWKS)
  • StartTLS: ldap:// поднимается до TLS — Max
  • Временная блокировка учётной записи вместо безвозвратного удаления

Установка и эксплуатация

Один бинарник на Rust и одна база PostgreSQL - от установки на ноутбуке до нескольких реплик в Kubernetes

  • Один бинарник 67 МБ, 46 МБ памяти в покое (замер на сборке 1.1.0)
  • Docker и docker compose, пакеты deb и rpm, чарт Helm для Kubernetes
  • Несколько реплик: фоновые задачи ведёт одна, лидерство на блокировках PostgreSQL
  • Установка без Docker: вся очередь CI уходит внешним исполнителям
  • Встроенный SSH-сервер - без системного sshd, ключи и настройки из админки без перезапуска
  • Мастер настройки при первом запуске
  • PostgreSQL 15 и новее (проверки идут на 17, поставляемый compose поднимает 18)
  • Документация API и текст лицензионного соглашения работают без выхода в интернет
  • Выдача пакетов через посредника - работа в закрытом контуре