---
title: "Ring CLI"
description: "Команда ring поставляется в публичном репозитории в cli/. Используйте upgrade, чтобы подтянуть системные обновления из upstream в свой клон, config и test для локальных проверок, а prod или status только тогда, когда у вас собственный кластер Kubernetes."
locale: "ru"
---
# Ring CLI

> **Info**
> **Статус:** Ring CLI поставляется в публичном репозитории в `cli/`. Раньше документация утверждала, что CLI доступен только в enterprise-версии, но это уже не так. `upgrade`, `config` и `test` работают для любого клона. `prod` и `status` ожидают кластер Kubernetes, к которому вы подключаетесь по SSH, и манифесты, которые вы предоставляете сами. Используйте вкладки **Основатель** / **Разработчик** на боковой панели, чтобы отфильтровать эту страницу.

Команда `ring` представляет собой небольшой инструмент на Node.js (`commander`, Node 18 или новее), который лежит рядом с приложением в репозитории Layer 1: `ring/cli/` рядом с `ring/web/`. Она решает три задачи: подтягивает обновления Ring из upstream в ваш клон, хранит локальную конфигурацию развёртывания и выкатывает Docker-образ в Kubernetes.

| Раньше в документации | Текущий репозиторий |
|-------------------|--------------|
| CLI нет в публичном репозитории GitHub | `cli/` отслеживается в корне репозитория и публикуется |
| Выполните `npm link`, затем `ring --version` | Выполните `npm run cli:install` из `web/`, затем `ring --help` |
| `ring deploy prod` | Команда называется `ring prod`. Подкоманды `deploy` нет |
| Сообщество пользуется только скриптами | Сообщество может использовать `ring upgrade` для безопасных слияний из upstream |

### For founders

## Что CLI даёт вашему клону

  
- **[Оставайтесь в актуальном состоянии](/docs/development/community-tooling.md)** — `ring upgrade` показывает, какие системные файлы Ring изменились в upstream, и сливает их только по вашей команде.

  
- **[Собственный хостинг](/docs/deployment/self-hosted.md)** — Нет кластера? Используйте `install.sh` и обычный хост с Node или Docker. CLI не обязателен.

  
- **[Управляемый хостинг](/docs/development/oss-vs-enterprise.md)** — Для поселенцев Ringdom конвейер сборки и развёртывания запускают за них.

### Типичные сценарии

1. **Вы сделали форк Ring несколько месяцев назад.** Ваш разработчик запускает `ring upgrade`, чтобы увидеть изменения в upstream, просматривает diff и затем применяет его. Ничего не коммитится автоматически.
2. **У вас собственный Kubernetes.** Ваш разработчик направляет CLI на ваш управляющий узел, реестр и пространство имён, а затем выпускает новые версии через `ring prod`.
3. **Вам нужен только один сервер.** Обойдитесь без CLI. Воспользуйтесь руководством по собственному хостингу.

> **Tip**
> Сразу после установки значения CLI по умолчанию указывают на собственный продакшн-кластер и реестр Ringdom. Попросите разработчика задать ваши значения через `ring config`, прежде чем запускать `prod` или `status`.

### For developers

## Установка

**Подключите бинарный файл**

{`npm run cli:install   # cd ../cli && npm install && npm link
ring --help

# or run without a global link
npm run cli:dev -- --help`}

**Направьте CLI на свою инфраструктуру**

Конфигурация хранится в `~/.ring-platform.org/config.json` и начинается со значений по умолчанию из `cli/config.js`.

{`ring config --set k8s.controlNode=
ring config --set k8s.namespace=
ring config --set k8s.deployment=
ring config --set app.url=https://
ring config --list`}

## Команды (из `cli/index.js`)

| Команда | Что делает | Основные параметры |
|---------|--------------|--------------|
| `ring upgrade` | Трёхстороннее слияние системных файлов из upstream в ваш клон. По умолчанию только предпросмотр | `--apply`, `--repo `, `--branch `, `--force` |
| `ring config` | Чтение и запись `~/.ring-platform.org/config.json` | `--set k=v`, `--get k`, `--list`, `--reset` |
| `ring test` | Проверки базы данных и сервисов | `--type db-connection\|db-service\|user-data\|username` |
| `ring prod` | Сборка Docker, push, `kubectl apply`, `set image`, ожидание rollout | `--deploy-version`, `--skip-build`, `--skip-push`, `--skip-deploy`, `--skip-manifest-apply`, `--apply-k8s-secrets`, `--dry-run` |
| `ring status` | Поды, сервисы и ingress по SSH, затем `GET {app.url}/api/health` | нет |

У `ring prod` также есть `--forge-buildkit` и `--from-forge`. Оба параметра управляют приватным сборщиком Ringdom и вне его бесполезны.

## Как работает `ring upgrade`

- **Upstream:** `upgrade.repoUrl` по умолчанию `https://github.com/connectplatform/ring`, ветка `main`, имя remote `ring-upstream`.
- **База:** последний синхронизированный коммит upstream (`upgrade.lastSyncedRef`). Затрагиваются только файлы, изменённые между базой и upstream.
- **Исключения:** пути из `.reggie-propagate-exclude.json` всегда пропускаются.
- **Безопасность:** конфликты остаются в виде стандартных маркеров git. Ничего не коммитится. История записывается в `.ring-upgrade-history.json` в корне git.

{`ring upgrade            # dry run: list upstream changes
ring upgrade --apply    # write the merge to your working tree
git diff                # review, then commit yourself`}

## Что нужно для `ring prod`

| Входные данные | Откуда берутся |
|-------|---------------------|
| Репозиторий образа | `RING_DOCKER_REGISTRY` / `RING_DOCKER_NAMESPACE` / `RING_DOCKER_IMAGE` (по умолчанию: реестр Ringdom) |
| Манифесты | `web/k8s/deployment.yaml`, иначе `k8s/` в org-оверлее (`cli/paths.js` `resolveK8sDir`). Их нет в публичном репозитории |
| Секреты кластера | `--apply-k8s-secrets` читает `RING_K8S_SECRETS_YAML` или `k8s/secrets.yaml` |
| Аргументы сборки | JSON в `RING_CLI_SECRETS_PATH` (`build_args`) |
| Хост с kubectl | `k8s.controlNode` или `RING_K8S_SSH_HOST` для одного запуска |

Всегда сначала запускайте `ring prod --dry-run`. Эта команда выводит каждую команду сборки, push и `kubectl`, не выполняя их.

## Известные пробелы

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

  
- [development/community-tooling](/docs/development/community-tooling.md) — Следующий шаг: полный список публичных скриптов настройки, которые лежат рядом с CLI.

  
- [development/oss-vs-enterprise](/docs/development/oss-vs-enterprise.md) — См. также: какие части конвейера CLI работают только внутри Ringdom.

  
- [deployment/self-hosted](/docs/deployment/self-hosted.md) — Тот же процесс: развёртывание без Kubernetes, где CLI не обязателен.
