Документация Руководство по установщику

Установщик Mockarty

mockarty-cli install — это канонический способ развернуть любой
бинарник платформы Mockarty в любом из поддерживаемых форматов: «голый»
бинарник, Docker Compose или Kubernetes (Helm).

Компоненты

mockarty-cli install умеет ставить шесть платформенных бинарников:

Бинарник Что делает
mockarty Центральный сервер админки (Web UI, REST + gRPC API, все фичи)
mockarty-resolver Лёгкий узел-резолвер моков для распределённых развёртываний
mockarty-runner Раннер для API-тестов, perf, фаззинга
mockarty-server-generator Генератор автономных mock/MCP/gRPC/SOAP-серверов из спек
mockarty-desktop Кросс-платформенный десктоп (standalone / connected / personal)
mockarty-cli Сам CLI (канал self-update)

Форматы развёртывания

Формат Флаг Когда выбирать
Бинарник --mode binary (по умолчанию) Один хост, systemd / launchd / Windows Service
SQLite --mode sqlite Самый простой старт: один бинарник, встроенная база, без PostgreSQL и Redis
Compose --mode docker-compose Один хост или VM, есть Docker
Kubernetes --mode kubernetes Production-кластер, есть Helm 3
Operator --mode operator Kubernetes, где кластером управляет оператор Mockarty

Быстрый старт

Десктопное приложение для Linux

После загрузки Linux-архива Desktop распакуйте его и запустите установщик из
пакета:

VERSION=1.2.3
tar -xzf "Mockarty-${VERSION}-linux-amd64.tar.gz"
cd mockarty-desktop
./install.sh

Замените 1.2.3 на версию загруженного релиза. На ARM64 используйте архив
linux-arm64.

Установка по умолчанию выполняется для текущего пользователя и не требует прав
администратора. Приложение попадает в $HOME/.local/bin, а desktop-файл — в
$HOME/.local/share/applications. Если каталога ещё нет в PATH, запускайте
приложение как $HOME/.local/bin/mockarty-desktop или добавьте каталог в
PATH.

Чтобы обновить существующую установку из такого пакета, распакуйте новый архив
и запустите его установщик с --force:

./install.sh --force

Обновление выполняется, только если существующие Desktop-файлы всё ещё
принадлежат предыдущей пакетной установке. Установщик не перезаписывает чужие
файлы, оказавшиеся по тем же путям.

После успешного обновления сохраняется ровно один проверенный слот предыдущего
пакета. Чтобы транзакционно поменять текущий и сохранённый слоты местами,
выполните:

$HOME/.local/bin/mockarty-desktop-rollback

Откат не выполняется, если один из слотов отсутствует, изменён или больше не
соответствует своей квитанции владения. После успешного отката заменённый слот
остаётся единственным слотом отката, поэтому той же командой можно отменить
переключение.

В упакованной нативной сборке Desktop откройте Справка → Проверить
обновления…
для подписанного онлайн-канала или Справка → Импортировать
офлайн-обновление…
для отдельно полученного пакета. Оба пути одинаково
проверяют метаданные, индекс релиза, хеш, подпись пакета и платформенную подпись.
Фоновое скачивание не выполняется, а установка не начинается, пока вы не
выберете Установить проверенное обновление для точного кандидата.

Нативная установка предлагается, только если точный пакет Desktop содержит
встроенное доверие релиза и принятый помощник для платформы. Иначе Mockarty
сохраняет проверенный пакет, сообщает, что установка не запускалась, и
предлагает ручной путь. Используйте только Windows- или macOS-релиз, в
примечаниях которого этот точный пакет указан как подписанный для платформы;
не подтверждайте неожиданный запрос UAC или Gatekeeper. Dev-сборка показывает
недоступность канала и не переключается на устаревшую замену бинарника.

Состояние нативного обновления Desktop

Диалог всегда показывает текущую версию и одно основное действие. Кнопка
Данные проверки раскрывает версию-кандидат, канал, ограниченный размер,
префикс SHA-256, доверие издателю и инструкции восстановления без локальных
путей и внутренних ошибок.

Состояние Что означает Что делать
Проверка Проверяются метаданные или офлайн-пакет; установка не началась Дождаться или отменить проверку
Актуальная версия В подписанном канале нет более нового совместимого пакета Закрыть или проверить офлайн-пакет
Готово Точный кандидат проверен и сохранён Изучить данные и устанавливать только при доступном нативном помощнике
Транзакция выполняется Помощник владеет устойчивым запросом и проверяет готовность после перезапуска Сохранить оба пакета; продолжать только по предложению диалога
Завершено Кандидат прошёл проверку готовности Закрыть диалог
Предыдущая версия восстановлена Готовность не подтверждена, восстановлен сохранённый слот Изучить данные восстановления перед новой проверкой
Ручное восстановление Нельзя доказать завершение или откат Сохранить состояние и пакеты; выполнить показанные инструкции платформы

Приложение закрывается и перезапускается только после устойчивого приёма
точного проверенного пакета внешним помощником. Успех показывается лишь после
проверки готовности нового процесса. При откате или ручном восстановлении не
удаляйте сохранённый пакет и каталог состояния обновления.

Чтобы удалить стандартную пользовательскую установку:

$HOME/.local/bin/mockarty-desktop-uninstall

Установщик также пытается зарегистрировать ссылки mockarty:// в текущем
Linux-окружении. Это best-effort шаг: если нужных desktop-утилит нет или они
отклоняют обновление, установщик выводит предупреждение, но оставляет приложение
установленным. Чтобы ссылки начали открываться в Mockarty, может потребоваться
обновить окружение или заново войти в desktop-сессию.

Просто бинарник

mockarty-cli install mockarty                       # latest
mockarty-cli install mockarty --mode sqlite         # проще всего: встроенная база
mockarty-cli install mockarty --version 1.2.3       # конкретная версия
mockarty-cli install --all                          # все компоненты

Имя admin-node принимается как псевдоним mockarty, а server-generator —
как псевдоним mockarty-server-generator.

После установки в каталог попадает:

  • сам бинарник (mockarty-linux-amd64)
  • симлинк без суффикса (mockarty)
  • README для бинарника (mockarty.README.md)
  • стартовый env-файл (mockarty.env)
  • service-юнит (mockarty.service для Linux, ru.mockarty.mockarty.plist
    для macOS, install-mockarty-service.ps1 для Windows)

Секция “Next Steps” в README расписывает активацию лицензии, смену
admin-пароля и подключение раннеров/резолверов.

Docker Compose

mockarty-cli install mockarty --mode docker-compose
docker compose up -d

В текущем каталоге появляются docker-compose.yml + .env (файл .env
создаётся с правами только для владельца — в него вы будете вписывать
учётные данные). Каждый компонент — отдельный сервис; PostgreSQL и Redis
добавляются автоматически, если в выборке есть админский сервер.

Если в выборке есть resolver или runner, сначала поднимите админа — эти
два компонента аутентифицируются токенами, которые выпускает админ, и в
сгенерированном .env их поля закомментированы:

docker compose up -d mockarty        # 1. только админ
# 2. создайте токен резолвера и токен раннера в админе (Настройки → Интеграции)
# 3. впишите их в .env как RESOLVER_API_TOKEN / RUNNER_API_TOKEN
docker compose up -d                 # 4. затем остальное

CLI печатает те же четыре шага сразу после записи файлов.

Kubernetes / Helm

mockarty-cli install --all --mode kubernetes --namespace=mockarty

Нужны helm и kubectl в PATH. Установщик собирает values.yaml,
подключает Bitnami-репозиторий для саб-чартов PostgreSQL + Redis и
запускает helm upgrade --install против встроенного Helm-чарта Mockarty.
Флаг --dry-run пишет только values + README, не трогая кластер.

Закрепляйте образ, если обновление должно быть воспроизводимым. Чарт выводит
политику загрузки из самого образа: sha256:-дайджест или закреплённый тег
тянутся только при отсутствии образа на узле, а latest — при каждом старте.
Поэтому образ с тегом latest, уже лежащий на узле, helm upgrade не обновит:
имя образа, которое он сравнивает, не меняется. Передавайте явный тег или
дайджест (--set admin.image.tag=<версия>), а pullPolicy: Always используйте
только для тега, который вы сознательно перезаливаете под тем же именем. Список
значений — в README чарта.

Генерация конфигов без загрузки (setup)

Чтобы получить файлы развёртывания, не скачивая бинари (образ собирается
отдельно или нужны только манифесты):

mockarty-cli setup docker-compose    # docker-compose.yml + .env
mockarty-cli setup env               # только environment-файл
mockarty-cli setup kubernetes        # Helm values / K8s-манифесты

Кросс-платформенная загрузка

install по умолчанию качает для текущей ОС/архитектуры. Переопределите,
чтобы подготовить бинари под другую цель, или выберите канал релиза:

mockarty-cli install mockarty --os linux --arch arm64
mockarty-cli install mockarty --channel landing   # mockarty.ru вместо GitHub

Обновление

mockarty-cli upgrade all
mockarty-cli upgrade mockarty-runner
mockarty-cli upgrade mockarty --version 1.5.0
mockarty-cli update                              # проверить и обновить все отслеживаемые компоненты

upgrade переустанавливает до запрошенной (или последней) версии; update
проверяет все отслеживаемые компоненты и обновляет только те, у которых есть
более новый релиз.

CLI читает ~/.mockarty/installed.json, для каждого отслеживаемого
компонента берёт latest и переустанавливает только если версия
отличается. --force форсирует переустановку той же версии (например,
после повреждённой загрузки).

Удаление

mockarty-cli uninstall mockarty-runner
mockarty-cli uninstall all

Удаляет бинарник, симлинк, per-binary README и сгенерированный
service-юнит, чистит запись в манифесте. Остановите сервис заранее
(systemctl stop, launchctl unload, Stop-Service) — uninstall не
тронет запущенный процесс.

versions

Покажет таблицу «установлено / доступно»:

mockarty-cli versions

Полезно перед апгрейдом — сразу видно, кто отстал.

Air-gapped установки

Mockarty работает полностью без интернета: веб-интерфейс, шрифты, иконки и
документация встроены в бинарник и ничего не загружают извне. Заранее нужно
подготовить только набор файлов для изолированного хоста. Соберите его один раз
на хосте с доступом к сети:

SOURCE_DATE_EPOCH=1767225600 mockarty-cli install bundle \
  --version 1.0.0 \
  --components mockarty,mockarty-resolver,mockarty-runner \
  --platforms linux-amd64 \
  --chart ./mockarty \
  --compose ./docker-compose.yml \
  --values ./values.onprem.yaml \
  --with-images --images-compose ./docker-compose.yml \
  --out mockarty-1.0.0-airgap.tar.gz

В одном каталоге появятся:

Файл Что это
mockarty-1.0.0-airgap.tar.gz Бинарники для выбранных платформ, Helm-чарт, файлы Compose и values, а также манифест со списком всех файлов и их SHA-256
mockarty-1.0.0-airgap.tar.gz.sha256 Контрольная сумма самого бандла — опубликуйте её или передайте по отдельному каналу
mockarty-1.0.0-airgap-images.tar Образы контейнеров (docker save), закреплённые по SHA-256 в манифесте бандла
load-images.sh Скрипт, который проверяет архив образов и загружает его в Docker

Бандл воспроизводим: одинаковые входные данные и одинаковый SOURCE_DATE_EPOCH
дают побайтно одинаковый файл, поэтому два человека могут сравнить контрольные
суммы, а не доверять друг другу на слово. --from-dir <каталог> берёт бинарники
из локальной сборки релиза вместо скачивания.

Перенесите весь каталог на изолированный хост и проверьте его перед установкой:

sha256sum -c mockarty-1.0.0-airgap.tar.gz.sha256
mockarty-cli install bundle-verify mockarty-1.0.0-airgap.tar.gz

bundle-verify отклоняет бандл, если хотя бы один файл отсутствует, добавлен,
изменён или не является обычным файлом, и проверяет лежащий рядом архив образов.
Затем установите:

mockarty-cli install airgap-install mockarty-1.0.0-airgap.tar.gz \
  --dir /opt/mockarty \
  --load-images mockarty-1.0.0-airgap-images.tar

Бинарники для этой платформы попадут в /opt/mockarty, чарт, файлы Compose и
values — в /opt/mockarty/mockarty-assets. Установщик сначала проверяет весь
бандл и ничего не записывает, если проверку не прошёл хотя бы один файл.

Kubernetes без доступа в интернет. Загрузите образы в свой приватный реестр
и установите чарт из распакованных файлов — зависимости PostgreSQL и Redis уже
лежат внутри чарта, поэтому обращения к репозиторию чартов не будет:

helm upgrade --install mockarty /opt/mockarty/mockarty-assets/chart/mockarty \
  -f /opt/mockarty/mockarty-assets/values/values.onprem.yaml \
  --set global.registry=registry.local/mockarty \
  --set postgresql.image.registry=registry.local \
  --set redis.image.registry=registry.local

Если вы используете внешние PostgreSQL и Redis, отключите встроенные
(postgresql.enabled=false, redis.enabled=false) и укажите чарту свои.

Зеркала релизов

Если есть приватное зеркало, но нет доступа к github.com, задайте URL:

export MOCKARTY_RELEASE_MIRROR=https://gh-mirror.corp.example.com
mockarty-cli install --all

Установщик автоматически перепишет все URL ассетов через зеркало.

Активация сервиса

После установки service-юнит сгенерирован, но не загружен в
менеджер сервисов — это требует root, и установщик намеренно остаётся
непривилегированным. README печатает точную команду для вашей ОС:

ОС Команда
Linux sudo systemctl daemon-reload && sudo systemctl enable --now mockarty
macOS launchctl load ~/Library/LaunchAgents/ru.mockarty.mockarty.plist
Windows powershell -ExecutionPolicy Bypass -File install-mockarty-service.ps1

Дальше