Вы создали отличный код, но как передать его на контроллер? Автоматизация этого процесса является одной из задач фреймворка.
Утилита деплоя
В актуальной версии Мирты применяется специальная утилита командной строки mirta deploy, входящая в состав пакета @mirta/cli. В отличие от прежнего способа с настроенной в package.json командой rsync, этот вариант реализации работает одинаково на всех платформах — будь то Windows (через WSL2), Linux или macOS.
Особое внимание уделено безопасности. Параметры подключения, такие как адрес контроллера, имя пользователя и способ аутентификации больше не нужно хранить в публичных файлах. Теперь они по умолчанию вынесены в .env.local — файл локальных переменных, который добавлен в .gitignore. Это предотвращает случайное раскрытие инфраструктурной информации при работе с публичными репозиториями.
Первичная настройка утилиты выполняется при создании проекта. Вам нужно лишь ответить на несколько сопутствующих вопросов мастера и он сформирует необходимые файлы:
Сейчас для подключения и передачи данных на контроллер mirta deploy использует протокол SSH.
Перечень доступных методов доставки кода может быть расширен на основе ваших предложений.
Полноценно поддерживаются SSH-ключи и токены PKCS#11. Аутентификация по паролю или FIDO2 (ключи id_ecdsa_sk, id_ed25519_sk) возможна, но будет требовать подтверждения на каждом шаге деплоя — ssh-agent кэширует только PIN-код токена PKCS#11 и парольную фразу закрытого ключа.
О том, как настроить подключение к контроллеру по SSH-ключу, рассказано в официальном руководстве Wiren Board:
Если вы хотите переносить закрытый ключ с одного компьютера на другой и минимизировать риск его утечки, можно рассмотреть вариант использования токена с поддержкой PKCS#11, например Рутокен ЭЦП:
Подготовка к работе
В зависимости от операционной системы, начальные шаги будут различаться.
Настройка в Windows
Понадобится настроить подсистему WSL2, установив в неё пакеты openssh-client и rsync.
На Windows 10 по умолчанию установлена первая версия WSL, которую нужно обновить до WSL2.
Откроем терминал PowerShell и выполним в нём команду
wsl --install Debian
Контроллер Wiren Board работает под управлением операционной системы Debian, поэтому для упрощения можно работать с ней и на компьютере.
После установки дистрибутива, проверим его версию WSL:
wsl --list --verbose
Отобразится таблица установленных образов. Напротив Debian в колонке Version должна стоять цифра 2.
Далее введём команду wsl и нажмём Enter, после чего перейдём в командную строку Linux. Здесь выполним обновление списка пакетов и установим те, что нужны для работы утилиты деплоя:
yes Y | (sudo apt update && sudo apt upgrade && sudo apt install opensc openssh-client rsync)
В процессе система несколько раз попросит подтвердить операцию. Используя «yes Y», мы заранее отвечаем утвердительно на все дальнейшие вопросы.
Настройка в Linux Debian 13
Обычно дистрибутив уже содержит актуальные версии openssh-client и rsync. На всякий случай, можно выполнить в консоли
sudo apt install opensc openssh-client rsync
Настройка в macOS
Понадобится установить актуальную версию rsync, например через Brew.
Конфигурация деплоя
Для настройки поведения деплоя применяется специальный файл mirta.config.json, который автоматически создаётся вместе с проектом при выборе опций SSH (минимальная версия) и примеров использования (версия с подробными комментариями).
Секция connections позволяет задать именованные строки подключения к контроллеру. Для безопасности рекомендуется использовать переменные окружения:
"connections": {
"default": "ssh://root@192.168.42.1",
"work": "${WB_CONN_SECRET}"
}
Секция deploy.mappings задаёт правила копирования: откуда брать файлы в проекте и куда помещать на контроллере. Каждое правило — отдельный вызов rsync.
⚠️ Важно! Поведение деплоя по умолчанию включает очистку целевых директорий для скриптов и модулей wb-rules:
- Очистка обеспечивает «чистый лист» — то, что запущено на контроллере, полностью соответствует текущему состоянию проекта.
- Это критично для воспроизводимости и отладки.
Например, если вы изменили структуру файлов в проекте и выполнили повторный деплой на контроллер, без очистки на контроллере могут остаться фрагменты предыдущего деплоя, приводящие к неожиданному поведению.
Отключить очистку можно установкой опции маппинга cleanup: false.
Свойство маппинга protect позволяет задать перечень файлов, которые не будут удалены с контроллера при очистке. Поддерживаются wildcard-шаблоны.
Секция deploy.profiles содержит именованные профили деплоя. Профиль — это готовое сочетание подключения и перечня применяемых маппингов.
Свойство connection в профиле может быть указано тремя способами: напрямую как строка подключения, по имени — ссылаясь на запись из секции connections, или через переменные окружения, чтобы гибко управлять параметрами в разных средах.
При запуске команды деплоя можно указать профиль с помощью параметра "profile". Он определяет, какие настройки использовать:
pnpm mirta deploy --profile=home
Если нужно применить этот профиль к другому подключению, поможет параметр "to". Он позволяет временно переопределить целевое соединение — как строкой подключения, так и именем из секции connections:
pnpm mirta deploy --profile=work --to=ssh://root@192.168.42.1
pnpm mirta deploy --profile=home --to=connection_name
Если команда деплоя запускается без параметров, используются значения по умолчанию: профиль default и подключение с именем default. При этом вы можете переопределить эти значения в своей конфигурации.
Передача файлов на контроллер
Утилита заменяет стандартный npm-скрипт проектов Мирты wb:deploy, поэтому для запуска можно выполнить в терминале VSCode
pnpm wb:deploy
Система выполнит необходимые проверки и запустит передачу файлов.
Предыдущий вариант запуска равнозначен прямому вызову:
pnpm mirta deploy
При выполнении команды можно добавить ключ --dry-run, так программа отобразит запланированные изменения, но не станет применять их:
pnpm mirta deploy --dry-run
Симуляция позволяет оценить последствия деплоя, отображая в консоль все изменения в виде списка.
Если язык интерфейса не определился автоматически, то для переключения на русский поможет параметр смены локали --locale=ru
pnpm mirta deploy --locale=ru
Подробное описание mirta deploy доступно по ссылке:
Послесловие
Mirta создаётся и развивается как open-source проект — без рекламы и скрытых целей.
Я делюсь всеми решениями открыто: код, документация, примеры — доступны каждому.
Если вам нравится направление, в котором движется фреймворк, и вы хотите, чтобы он становился лучше, стабильнее и удобнее — вы можете стать спонсором на Boosty.
Ваш вклад поможет мне:
- уделять больше времени на разработку и документацию,
- закупать оборудование и тестировать систему в реальных условиях,
- оперативно реагировать на запросы сообщества.
А среди преимуществ для спонсоров — доступ к закрытому каналу общения, приоритет в обсуждении идей и возможность влиять на roadmap.
Также всегда рад видеть обратную связь и помощь в любом виде:
Спасибо, что читаете, используете и верите в Mirta.